如何在日期格式中指定TimeZone以获取本地时间

时间:2016-06-23 08:18:22

标签: python python-2.7 date python-3.x datetime

我正在尝试比较两个日期值:

1)Jun 23, 2016 10:36:31 EET

2)Thu, 23 Jun 2016 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 23, 2016 10:36:31 EET作为输出?

P.S。 EET是我当地的时区

3 个答案:

答案 0 :(得分:1)

以下是使用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

请阅读文档,因为使用时区很棘手,并且有很多警告:

Build 108

答案 1 :(得分:0)

AFAIK AM不是时区。您是否尝试让datetime.astimezone(tz)工作? https://docs.python.org/2/library/datetime.html

答案 2 :(得分:0)

如果您想比较日期时间值,最好将它们转换为datetime个对象,例如在两个输入字符串上调用datetime.strptime,每个输入字符串都有相应的格式字符串,然后比较生成的datetime个对象。