9

我的时区是 UTC+5。

所以当我做 datetime.datetime.now() 它给出:

2012-07-14 06:11:47.318000
#note its 6AM

我想从中减去5几个小时,使它等于datetime.datetime.utcnow()我做了:

import time
from datetime import datetime, timedelta
dt = datetime.now() - timedelta(hours=time.timezone/60/60)
print dt
#gives 2012-07-14 11:11:47.319000

"""
Here 11 is not the PM its AM i double check it by doing
print dt.strftime('%H:%M:%S %p')
#gives 11:11:47 AM
"""

您看到不是减去 5 小时而是在日期时间中增加了 5 小时?我在这里做错了吗?

4

2 回答 2

9

您正在创建一个负时间增量。的值为time.timezone负:

>>> import time
>>> time.timezone
-36000

在这里,我在 UTC + 10,所以你的代码变成:

>>> from datetime import timedelta
>>> print timedelta(hours=time.timezone/60/60)
-1 day, 14:00:00
于 2012-07-14T01:32:18.117 回答
5

文档很清楚:

time.timezone本地(非 DST)时区的偏移量,以 UTC 以西的秒数为单位(在西欧大部分地区为负,在美国为正,在英国为零)。

因此,正 UTC 值具有负时区。

于 2012-07-14T01:33:31.227 回答