python计算夏令时的具体日期_如何在python中使不知情的日期时区知道

如何在python中使不知情的日期时区知道

我需要做的是

我有一个时区不知情的datetime对象,为了能够将它与其他时区感知的datetime对象进行比较,我需要添加一个时区。我不想把我的整个应用程序转换成时区,不知道这个遗留情况。

我试过的

首先,为了证明这个问题:Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) [GCC 4.2.1 (Apple Inc. build 5646)] on darwinType "help", "copyright", "credits" or

"license" for more information.>>> import datetime>>> import pytz>>> unaware = datetime.datetime(2011,8,15,8,15,12,0)>>> unaware

datetime.datetime(2011, 8, 15, 8, 15, 12)>>> aware = datetime.datetime(2011,8,15,8,15,12,0,pytz.UTC)>>> aware

datetime.datetime(2011, 8, 15, 8, 15, 12, tzinfo=)>>> aware == unawareTraceback (most recent call last):

File "", line 1, in TypeError: can't compare offset-naive and offset-aware datetimes

首先,我尝试了astimezone:>>> unaware.astimezone(pytz.UTC)Traceback (most recent call last):

File "", line 1, in ValueError: astimezone() cannot be applied to a naive datetime>>>

这一点也不奇怪,因为它实际上是在尝试进行一次转换。替换似乎是一个更好的选择(如Python:如何获得datetime的值,即“时区感知”?):>>> unaware.replace(tzinfo=pytz.UTC)datetime.datetime(2011, 8, 15, 8, 15, 12, tzinfo=)

>>> unaware == awareTraceback (most recent call last):

File "", line 1, in TypeError: can't compare offset-naive and offset-aware datetimes

>>>

但是正如您所看到的,替换似乎设置了tzinfo,但没有使对象意识到。我准备在解析输入字符串之前先修改输入字符串,使其具有一个时区(如果这重要的话,我将使用dateutil进行解析),但这似乎不可思议。

另外,我在python2.6和python2.7中都尝试过这一点,结果也是一样的。

语境

我正在为一些数据文件编写解析器。在日期字符串没有时区指示符的情况下,需要支持一种旧格式。我已经修复了数据源,但我仍然需要支持遗留数据格式。由于各种业务BS的原因,一次性转换遗留数据并不是一种选择。总的来说,我不喜欢硬编码默认时区的想法,在这种情况下,这似乎是最好的选择。我很有信心地知道所有的遗留数据都在UTC,所以在这种情况下,我准备接受违约的风险。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值