如何将datetime转换为不同的时区?

2024-05-13 06:51:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将日期时间字符串转换为不同的时区。我的代码工作,但结果不是我要找的。你知道吗

我已经尝试了.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.


Tags: 字符串代码testdatetimedate时间sunprint
2条回答

多亏@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

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

同时分析时区:

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

这将在UTC时区中为您提供一个感知的datetime对象,该对象可以转换为其他时区。你知道吗

相关问题 更多 >