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

在Python中将时区感知日期时间转换为本地时间

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

在Python中将时区感知日期时间转换为本地时间

通常,要将任意时区感知日期时间转换为原始(本地)日期时间,我将使用

pytz
模块并将
astimezone
其转换为本地时间,
replace
并使日期时间变为原始状态:

In [76]: import pytzIn [77]: est=pytz.timezone('US/Eastern')In [78]: d.astimezone(est)Out[78]: datetime.datetime(2010, 10, 30, 13, 21, 12, tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>)In [79]: d.astimezone(est).replace(tzinfo=None)Out[79]: datetime.datetime(2010, 10, 30, 13, 21, 12)

但是由于你的特定日期时间似乎在UTC时区,因此你可以这样做:

In [65]: dOut[65]: datetime.datetime(2010, 10, 30, 17, 21, 12, tzinfo=tzutc())In [66]: import datetimeIn [67]: import calendarIn [68]: datetime.datetime.fromtimestamp(calendar.timegm(d.timetuple()))Out[68]: datetime.datetime(2010, 10, 30, 13, 21, 12)

顺便说一句,你最好将日期时间存储为朴素的UTC日期时间而不是朴素的本地日期时间。这样,你的数据是本地时间不可知的,并且仅在必要时才转换为本地时间或任何其他时区。有点类似于尽可能地使用unipre,并且仅在必要时进行编码。

因此,如果你同意将日期时间存储在幼稚的UTC中是最好的方法,那么你只需定义:

local_d = d.replace(tzinfo=None)


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

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

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