首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将python日期时间转换为时间戳并返回到UTC仍使用本地时区

将python日期时间转换为时间戳并返回到UTC仍使用本地时区
EN

Stack Overflow用户
提问于 2011-05-11 05:22:57
回答 2查看 90.2K关注 0票数 57

我正在使用一段代码,它为我提供了utc时间戳,我希望将它们转换为适当的日期时间。不幸的是,当我使用pytz测试简单案例时,日期时间增加了6个小时( CST偏移到UTC)。我需要保持时区数据正确,因为我也在计算其他时区之间的差异。您知道为什么以及如何将utc时间戳转换为utc日期时间吗?

代码语言:javascript
复制
In [1]: import pytz

In [2]: from datetime import datetime

In [3]: import time

In [4]: datetime.fromtimestamp(time.mktime(datetime(7,1,1, tzinfo=pytz.UTC).timetuple()), tz=pytz.UTC)
Out[4]: datetime.datetime(2007, 1, 1, 6, 0, tzinfo=<UTC>)

In [5]: datetime.fromtimestamp(time.mktime(datetime(7,1,1).utctimetuple()), tz=pytz.UTC)
Out[5]: datetime.datetime(2007, 1, 1, 6, 0, tzinfo=<UTC>)

In [6]: datetime.fromtimestamp(time.mktime(datetime(7,1,1).utctimetuple()))
Out[6]: datetime.datetime(2007, 1, 1, 0, 0)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-11 21:59:56

嗯,我在这里找到了答案:How to specify time zone (UTC) when converting to Unix time? (Python)

代码语言:javascript
复制
In [101]: ts = calendar.timegm(datetime(2010, 7, 1, tzinfo=pytz.utc).timetuple())

In [102]: datetime.fromtimestamp(ts, tz=pytz.utc)
Out[102]: datetime.datetime(2010, 7, 1, 0, 0, tzinfo=<UTC>)
票数 26
EN

Stack Overflow用户

发布于 2014-02-22 16:57:51

要从“自纪元起的秒数”时间戳中获取以UTC表示时间的朴素datetime对象,请执行以下操作:

代码语言:javascript
复制
from datetime import datetime

utc_dt = datetime.utcfromtimestamp(ts)

如果要获取UTC时区的aware datetime对象:

代码语言:javascript
复制
import pytz

aware_utc_dt = utc_dt.replace(tzinfo=pytz.utc)

要将其转换为其他时区,请执行以下操作:

代码语言:javascript
复制
tz = pytz.timezone('America/Montreal')
dt = aware_utc_dt.astimezone(tz)

要将时间戳直接转换为给定时区中的aware datetime对象,请执行以下操作:

代码语言:javascript
复制
dt = datetime.fromtimestamp(ts, tz)
票数 132
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5956638

复制
相关文章

相似问题

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