如何将日期时间转换为不同的时区?

时间:2019-01-28 10:06:58

标签: python datetime timezone python-datetime pytz

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

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

2 个答案:

答案 0 :(得分:1)

您的解析对象replaceable Test.Call1 OBJ constrainedby Test.Call_Interface(pp=pp0) annotation (choicesAllMatching); 不包含时区。这是一个简单的test对象。同时使用datetimelocalize不能进行任何转换,因为他们不知道从中转换什么。因此他们只附加了天真astimezone的时区。

还解析时区:

datetime

这为您提供了UTC时区中的 aware datetime.strptime('Sun Sep 16 03:38:40 +0000 2018','%a %b %d %H:%M:%S %z %Y') ^^ 对象,可以将其转换到其他时区。

答案 1 :(得分:0)

由于@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

相关问题