首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python时区给出的时间与UTC时间完全相同。

问Python时区给出的时间与UTC时间完全相同。
EN

Stack Overflow用户
提问于 2017-04-20 11:52:59
回答 2查看 1.5K关注 0票数 3

在Linux上,我试图使用pytz获取时区转换时间。但是,下面的代码没有返回正确的‘Asial/汉城’时间。

代码语言:javascript
复制
from datetime import datetime
from pytz
seoul = pytz.timezone('Asia/Seoul')
curtime = seoul.localize(datetime.now())

我就是这样在Linux中进行测试的。datetime.now()返回UTC时间。而且,“亚洲/首尔”的pytz时区也会返回相同的UTC时间。

​

​

我正在寻找答案,如何得到正确的时区时间与pytz。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-20 12:04:39

你在本地化一个天真的datetime。这意味着您有一个没有时区信息的datetime;在它上使用localize意味着在以前没有时区信息的地方附加时区信息。比较:

代码语言:javascript
复制
>>> 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:

代码语言:javascript
复制
>>> datetime.now(tz=seoul)
datetime.datetime(2017, 4, 20, 21, 0, 0, 0, tzinfo=<DstTzInfo 'Asia/Seoul' KST+9:00:00 STD>)

或者,获取已经有时区的时间戳,并将其转换为:

代码语言:javascript
复制
>>> 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>)

您不能从天真的时间戳(没有时区)进行时区转换,因为这本身就没有任何意义。

票数 3
EN

Stack Overflow用户

发布于 2017-04-20 12:08:35

代码语言:javascript
复制
from datetime import datetime
import pytz
seoul = pytz.timezone('Asia/Seoul')
curtime = seoul.localize(datetime.now())

这是正确的。

在你的linux上,你能给我看一下date -R的输出吗?我想你的机械之音是世界协调时。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43518777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档