不了解Python中的日期时间增量

时间:2019-01-08 19:54:28

标签: python datetime python-datetime

from datetime import datetime as dt

我有2个日期时间字段

dt.now()返回 2019-01-08 11:46:26.035303 这是PST

x是我的数据集

x['CreatedDate']返回 2019-01-08T20:35:47.000 + 0000

dt.strptime(x['CreatedDate'.split('.')[0],'%Y-%m-%dT%H:%M:%S)) - datetime.timedelta(hours=8)返回 2019-01-08 08:43:33

我减去两个, tdelta = dt.now() - (dt.strptime(x['CreatedDate'.split('.')[0],'%Y-%m-%dT%H:%M:%S)) - datetime.timedelta(hours=8)) 这是 2019-01-08 11:46:26.035303 - 2019-01-08 08:43:33

差异应该是〜3小时,但我得到的结果是-1 day, 11:02:53.039790 -13H 12M 53S

对于返回的内容,我感到困惑。

2 个答案:

答案 0 :(得分:1)

免责声明

我在制作您制作的datetime对象时遇到了困难。因此,我的答案将不能直接解决您的确切问题。

我的代码中没有定义x。如果您提供了它,我可以将答案调整得更具体。

答案

但是,如果您使用此代码:

import datetime as dt

first_time = dt.datetime(2019, 1, 8, 8, 43, 33) #This is a good way to make a datetime object

要创建日期时间对象,则下面的代码将进行正确的计算并为您有效打印:

second_time = dt.datetime.now() 
my_delta = first_time - second_time
print("Minutes: " + str(my_delta.total_seconds()/60))
print("Hours: " + str(my_delta.total_seconds()/3600))
print("Days: " + str(my_delta.total_seconds()/3600/24))

注意

dt.datetime在这里花费了(年,月,日,时,分,秒),但是dt.datetime.now()也正在以微秒(年,月,日,时,分,秒,微秒) )。该函数可以处理不同的时间特性,而不会出错。

注释2

如果您进行print(my_delta)并得到类似的信息:-1 day, 16:56:54.481901,那么如果您的差额为Hours: -7.051532805277778,则等于您的差额,这是因为24-16.95 = -7.05

答案 1 :(得分:0)

问题在于减去datetime.timedelta(hours = 8)后,我将其从dt.now更改为dt.utcnow()删除了,并且工作正常。