日期时间与时间间隔

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
"""

你看,它并没有减去五个小时,而是将五个小时加入到日期时间中了?我这里做错了什么吗?

尝试将“-”更改为“+”。 - inspectorG4dget
是的,这就是我的问题。当我使用“+”时,它实际上是在减去,这就是为什么我感到困惑? - Aamir Rind
2个回答

10
你正在创建一个负的时间差。 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

谢谢,我没有注意到time.timezone返回了负值。 - Aamir Rind

5

文档 很清楚:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接