栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python astimezone()意外结果

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python astimezone()意外结果

不幸的是 ,在许多时区使用

tzinfo
标准
datetime
构造函数的参数“不起作用”
pytz

>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=amsterdam).strftime(fmt)'2002-10-27 12:00:00 LMT+0020'

但是对于没有夏令时转换的时区来说是安全的,例如UTC:

>>> datetime(2002, 10, 27, 12, 0, 0, tzinfo=pytz.utc).strftime(fmt)'2002-10-27 12:00:00 UTC+0000'

您会注意到:

>>> datetime.datetime(2000, 1, 1, 0, 1, tzinfo=pytz.timezone('Europe/Paris'))datetime.datetime(2000, 1, 1, 0, 1, tzinfo=<DstTzInfo 'Europe/Paris' LMT+0:09:00 STD>)

“ LMT + 0:09:00 STD”…?! 那是历史的偏移,不是当前的标准。

pytz
不能正确处理传回的时区捆绑包(包含永远的所有历史偏移量)
datetime
,它选择一些随机的(可能是 第一个
可能的)偏移量,而不是与实际时间相关的偏移量。可以说,由于它需要首先正确地解释时间,因此不能从时区束中选择正确的时间偏移。

该库仅支持构建本地时间的两种方式。第一种是使用库

localize()
提供的方法
pytz
。这用于本地化天真
datetime
datetime
没有时区信息):

>>> loc_dt = eastern.localize(datetime(2002, 10, 27, 6, 0, 0))>>> print(loc_dt.strftime(fmt))2002-10-27 06:00:00 EST-0500

建立本地化时间的第二种方法是使用标准

astimezone()
方法转换现有的本地化时间:

>>> ams_dt = loc_dt.astimezone(amsterdam)>>> ams_dt.strftime(fmt)'2002-10-27 12:00:00 CET+0100'

http://pytz.sourceforge.net



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596669.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号