我正在尝试将日期时间字符串转换为其他时区。我的代码有效,但结果却不是我想要的。
我已经尝试过.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.
答案 0 :(得分:1)
您的解析对象replaceable Test.Call1 OBJ constrainedby Test.Call_Interface(pp=pp0)
annotation (choicesAllMatching);
不包含时区。这是一个简单的test
对象。同时使用datetime
和localize
不能进行任何转换,因为他们不知道从中转换什么。因此他们只附加了天真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