您正在本地化一个天真的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>)
你不能从一个天真的时间戳(没有时区)做一个时区转换,因为这本质上没有任何意义。
谢谢!它现在适用于'datetime.now(tz = seoul)' – Justin