【问题标题】:How to convert datetime to different timezone?如何将日期时间转换为不同的时区?
【发布时间】:2019-06-21 07:32:38
【问题描述】:

我正在尝试将日期时间字符串转换为不同的时区。我的代码有效,但结果不是我想要的。

我已经尝试过.localize().astimezone,但是输出是一样的。

phtimezone = timezone('Asia/Manila')
test = datetime.datetime.strptime('Sun Sep 16 03:38:40 +0000 2018','%a %b %d %H:%M:%S +0000 %Y')
date = phtimezone.localize(test)
print (date) 
date = test.astimezone(phtimezone)
print (date)

输出为2018-09-16 03:38:40+08:00。我期待它是2018-09-16 11:38:40+08:00.

【问题讨论】:

    标签: python datetime timezone python-datetime pytz


    【解决方案1】:

    感谢@deceze,我能够修复它。代码如下:

    phtimezone = pytz.timezone('Asia/Manila')
    test = datetime.datetime.strptime('Sun Sep 16 03:38:40 +0000 2018','%a %b %d %H:%M:%S %z %Y')
    test_utc = test.replace(tzinfo=timezone('UTC'))
    date = test_utc.astimezone(pytz.timezone('Asia/Manila'))
    print (date)
    

    现在的输出是2018-09-16 11:38:40+08:00

    【讨论】:

      【解决方案2】:

      您解析的对象test 不包含时区。这是一个天真的datetime 对象。同时使用localizeastimezone 不能进行任何转换,因为他们不知道他们从什么转换;所以他们只是将时区附加给天真的datetime

      同时解析时区:

      datetime.strptime('Sun Sep 16 03:38:40 +0000 2018','%a %b %d %H:%M:%S %z %Y')
                                                                            ^^
      

      这为您提供了一个 aware datetime 对象在 UTC 时区,可以转换到其他时区。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-27
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 2022-12-17
        • 1970-01-01
        • 1970-01-01
        • 2016-11-01
        相关资源
        最近更新 更多