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
对于返回的内容,我感到困惑。
答案 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()删除了,并且工作正常。