首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python datetime.datetime未返回包含夏令时的正确时区信息

python datetime.datetime未返回包含夏令时的正确时区信息
EN

Stack Overflow用户
提问于 2011-07-08 03:56:09
回答 1查看 1.3K关注 0票数 2

我在python中创建日期时遇到了问题,因为在某些情况下,我创建的日期不支持夏令时。

例如,如果我转到shell并运行

代码语言:javascript
运行
复制
>>> adjust_datetime_to_timezone(value=datetime.datetime.now(), from_tz=timezone('UTC'), to_tz=timezone('US/Pacific'))
datetime.datetime(2011, 7, 7, 12, 41, 16, 337918, tzinfo=<DstTzInfo 'US/Pacific' PDT-1 day, 17:00:00 DST>)

我得到了正确的时间。

我想创建一个日期作为当前日期的开始,所以我运行:

代码语言:javascript
运行
复制
>>> datetime.datetime(year=2011, month=7, day=7,  tzinfo=timezone('US/Pacific'))
datetime.datetime(2011, 7, 7, 0, 0, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>)

请注意,这是一个PST日期,因为当我将其转换为UTC时:

代码语言:javascript
运行
复制
>>> adjust_datetime_to_timezone(datetime.datetime(year=2011, month=7, day=7,  tzinfo=timezone('US/Pacific')), from_tz=timezone('US/Pacific'), to_tz=timezone('UTC')) datetime.datetime(2011, 7, 7, 8, 0, tzinfo=<UTC>)

请注意,这是UTC时间07/07/2011 08:00,实际上是PDT时间01:00。

有人知道为什么python会给我datetime.datetime构造函数的PST日期,而不是adjust_datetime_to_timezone的PST日期吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-08 05:34:01

因为我看到了<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>,看起来你在使用pytz。在这种情况下,您可以使用localize方法创建支持时区的日期时间,并根据夏令时进行调整。(避免使用datetime.datetimetzinfo参数,因为它不会根据夏令时进行调整。)

代码语言:javascript
运行
复制
import pytz
import datetime as dt

now=dt.datetime(year=2011, month=7, day=7)
utc=pytz.utc
pacific=pytz.timezone('US/Pacific')    
now_pacific=pacific.localize(now)    
now_utc=now_pacific.astimezone(utc)

print(repr(now_pacific))
# datetime.datetime(2011, 7, 7, 0, 0, tzinfo=<DstTzInfo 'US/Pacific' PDT-1 day, 17:00:00 DST>)
print(repr(now_utc))
# datetime.datetime(2011, 7, 7, 7, 0, tzinfo=<UTC>)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6616349

复制
相关文章

相似问题

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