Python 如何在日期格式中指定时区以获取本地时间
我试图比较两个日期值: 1)Python 如何在日期格式中指定时区以获取本地时间,python,python-2.7,date,python-3.x,datetime,Python,Python 2.7,Date,Python 3.x,Datetime,我试图比较两个日期值: 1) 2016年6月23日10:36:31 EET 2) Thu,2016年6月23日07:36:31 GMT 为此,我需要将第二个日期转换为与第一个日期相同的日期格式,因此我使用以下代码: import datetime date = datetime.datetime.strptime("Thu, 23 Jun 2016 07:36:31 GMT", "%a, %d %b %Y %H:%M:%S %Z") .strftime('%b %d, %Y %H:%M:
2016年6月23日10:36:31 EET
2) Thu,2016年6月23日07:36:31 GMT
为此,我需要将第二个日期转换为与第一个日期相同的日期格式,因此我使用以下代码:
import datetime
date = datetime.datetime.strptime("Thu, 23 Jun 2016 07:36:31 GMT", "%a, %d %b %Y %H:%M:%S %Z")
.strftime('%b %d, %Y %H:%M:%S %Z')
并获得以下输出:
Jun 23, 2016 07:36:31
这仍然是GMT
时间(也未指定时区值)
我应该如何更新我的strftime
参数以获得Jun 232016 10:36:31 EET
作为输出
另外,EET是我的本地时区,AFAIK AM不是时区。您是否尝试让
datetime.astimezone(tz)
工作 如果要比较日期时间值,最好将它们都转换为datetime
对象,例如在两个输入字符串上调用datetime.strptime
,每个字符串都使用适当的格式字符串,然后比较生成的datetime
对象。以下是使用pytz
模块的基本方法:
import datetime
import pytz
fmt = "%a, %d %b %Y %H:%M:%S %Z"
date = datetime.datetime.strptime("Thu, 23 Jun 2016 07:36:31 GMT", fmt)
gmt_date = pytz.timezone('GMT').localize(date)
print("Time in GMT:", gmt_date.strftime(fmt), sep='\n')
# Now to convert! Notice it took into account "summer time"
print("Time in EET",
gmt_date.astimezone(pytz.timezone('EET')).strftime(fmt), sep='\n')
我的输出:
Time in GMT:
Thu, 23 Jun 2016 07:36:31 GMT
Time in EET
Thu, 23 Jun 2016 10:36:31 EEST
请阅读文档,因为使用时区很棘手,并且有许多警告:
对不起,时区确切地说是
AM
?无论如何,您可以使用pytz
模块:omg!我不应该工作那么多:)我是说EET
。问题更新