Python 字符串转换为Datetime和zone

Python 字符串转换为Datetime和zone,python,parsing,datetime,Python,Parsing,Datetime,我的问题是通过html解析网站,我提取的时间格式字符串。 我需要将字符串转换为datetime,然后再转换为您的时区 谢谢 hora = soup.select('span.match-time')[0].get_text().strip( ' - ' ) dt_obj = datetime.strptime(hora, '%H:%M') print (dt_obj) input_time = datetime.strptime(dt_obj, '%H:%M').time() utc_dt =

我的问题是通过html解析网站,我提取的时间格式字符串。 我需要将字符串转换为datetime,然后再转换为您的时区

谢谢

hora = soup.select('span.match-time')[0].get_text().strip( ' - ' )
dt_obj = datetime.strptime(hora, '%H:%M')

print (dt_obj)
input_time = datetime.strptime(dt_obj, '%H:%M').time()
utc_dt = datetime.combine(datetime.utcnow(), input_time)
tz = pytz.timezone('America/Montevideo')
salida = str(utc_dt.replace(tzinfo=pytz.utc).astimezone(tz))
错误 /


datetime.datetime.strptime接受一个字符串,您可以从中解析出时间,接受一种格式,您可以指定如何将时间写入该字符串,然后它解析该字符串以提取出一个datetime对象

再读一遍,确保你真的明白了。它产生错误的原因现在应该很明显了!您正在向需要两个字符串的函数传递对象

将其解析为对象后,可以对其调用方法,如下所示:

>>> dt_obj = datetime.datetime.strptime("12:00", "%H:%M")
>>> dt_obj
datetime.datetime(1900, 1, 1, 12, 0)
>>> dt_obj.hour
12
>>> dt_obj.minute
0
>>> dt_obj.time()
datetime.time(12, 0)
>>> dt_obj.year
1900
编辑1: 根据我所看到的,您提取小时和分钟,然后按照UTC标准用今天的日期/月/年构建datetime对象。不过,我不太明白你对时区做了什么,所以我把最后两行留给你

>>> dt_obj = datetime.strptime("12:00", "%H:%M")
>>> input_time = dt_obj.time()
>>> utc_dt = datetime.combine(datetime.utcnow(), input_time)
或者如果你需要短一点

>>> dt_obj = datetime.strptime("12:00", "%H:%M")
>>> utc_dt = datetime.combine(datetime.utcnow(), dt_obj.time())

这将使您从12:00到datetime。datetime2015,2,11,12,0

如果输入的时间字符串(如19:30)指UTC时间:

#!/usr/bin/env python
from datetime import datetime
import pytz

tz = pytz.timezone('America/Montevideo')
time_string = '19:30'
utc_dt = datetime.combine(datetime.utcnow(), 
                          datetime.strptime(time_string, '%H:%M').time())
dt = utc_dt.replace(tzinfo=pytz.utc).astimezone(tz)
print(dt.strftime('%Y-%m-%d %H:%M:%S %Z%z'))
# -> 2015-02-11 17:30:00 UYST-0200
如果输入时间为乌拉圭时间:

#!/usr/bin/env python
from datetime import datetime
import pytz

tz = pytz.timezone('America/Montevideo')
time_string = '19:30'
naive_dt = datetime.combine(datetime.now(tz), 
                            datetime.strptime(time_string, '%H:%M').time())
dt = tz.localize(naive_dt, is_dst=None)
print(dt.strftime('%Y-%m-%d %H:%M:%S %Z%z'))
# -> 2015-02-11 19:30:00 UYST-0200

注意:结果是不同的。

我是python新手,如何更正代码?@Fabián:这取决于您到底想做什么,从我上面的计算结果到我在上面的编辑中所做的事情。
#!/usr/bin/env python
from datetime import datetime
import pytz

tz = pytz.timezone('America/Montevideo')
time_string = '19:30'
naive_dt = datetime.combine(datetime.now(tz), 
                            datetime.strptime(time_string, '%H:%M').time())
dt = tz.localize(naive_dt, is_dst=None)
print(dt.strftime('%Y-%m-%d %H:%M:%S %Z%z'))
# -> 2015-02-11 19:30:00 UYST-0200