在Linux上,我试图使用pytz获取时区转换时间。但是,下面的代码没有返回正确的‘Asial/汉城’时间。
from datetime import datetime
from pytz
seoul = pytz.timezone('Asia/Seoul')
curtime = seoul.localize(datetime.now())我就是这样在Linux中进行测试的。datetime.now()返回UTC时间。而且,“亚洲/首尔”的pytz时区也会返回相同的UTC时间。

我正在寻找答案,如何得到正确的时区时间与pytz。
发布于 2017-04-20 12:04:39
你在本地化一个天真的datetime。这意味着您有一个没有时区信息的datetime;在它上使用localize意味着在以前没有时区信息的地方附加时区信息。比较:
>>> datetime.now()
datetime.datetime(2017, 4, 20, 14, 0, 0, 0)
>>> seoul.localize(datetime.now())
datetime.datetime(2017, 4, 20, 14, 0, 0, 0, tzinfo=<DstTzInfo 'Asia/Seoul' KST+9:00:00 STD>)它是同一时间,一次带有和一次没有时区信息。
如果您想获得首尔的当前时间,则需要使用该时区创建datetime:
>>> datetime.now(tz=seoul)
datetime.datetime(2017, 4, 20, 21, 0, 0, 0, tzinfo=<DstTzInfo 'Asia/Seoul' KST+9:00:00 STD>)或者,获取已经有时区的时间戳,并将其转换为:
>>> datetime.now(tz=timezone.utc).astimezone(seoul)
datetime.datetime(2017, 4, 20, 21, 0, 0, 0, tzinfo=<DstTzInfo 'Asia/Seoul' KST+9:00:00 STD>)您不能从天真的时间戳(没有时区)进行时区转换,因为这本身就没有任何意义。
发布于 2017-04-20 12:08:35
from datetime import datetime
import pytz
seoul = pytz.timezone('Asia/Seoul')
curtime = seoul.localize(datetime.now())这是正确的。
在你的linux上,你能给我看一下date -R的输出吗?我想你的机械之音是世界协调时。
https://stackoverflow.com/questions/43518777
复制相似问题