gpt4 book ai didi

python - 使用 python 将字符串时间戳转换为纪元时间的最快方法是什么?

转载 作者:太空狗 更新时间:2023-10-30 02:48:32 27 4
gpt4 key购买 nike

我需要从字符串时间戳(如“2012-09-08 12:23:33”)到基于纪元时间的秒数进行大量对话。然后我需要获得两个时间戳之间的时间间隔。我试过了两种不同的方式:

date1 = '2012-09-08'
time2 = '12:23:33'
timelist1 = map(int, date1.split('-') + time1.split(':'))

date2 = '2012-09-08'
time2 = '12:23:33'
timelist2 = map(int, date2.split('-') + time2.split(':'))
delta = datetime.datetime(*timelist2) - datetime.datetime(*timelist1)
print delta.seconds

第二种方式是:

date1 = '2012-09-08'
time1 = '12:23:33'
d1 = datetime.datetime.strptime(date1 + ' ' + time1, "%Y-%m-%d %H:%M:%S")
seconds1 = time.mktime(d1.timetuple())
....
seconds2 = time.mktime(d2.timetuple())
print seconds2-deconds1

但是这两种方式都不够快,因为我有将近 1 亿个 Action 要做。有什么建议吗?

最佳答案

你最好使用 datetime.datetime.strptime() function ,然后将两个结果相减:

import datetime

date1, time1 = '2012-09-08', '12:23:33'
date2, time2 = '2012-09-08', '12:23:33'

dt1 = datetime.datetime.strptime(date1 + ' ' + time1, "%Y-%m-%d %H:%M:%S")
dt2 = datetime.datetime.strptime(date2 + ' ' + time2, "%Y-%m-%d %H:%M:%S")

print (dt1 - dt2).total_seconds()

请注意,datetime.timedelta.seconds 只为您提供以秒为单位的 remainder,还有一个 .days 属性。使用 .total_seconds()相反,它更方便,并且无需考虑 .days 值。

使用 datetime.datetime.strptime() 方法,加上 timedelta 方法,将大部分工作保留在 C 代码中,应该会更快。

请注意,由于解析步骤,这两种方法都不是很快。时间测试:

>>> import timeit
>>> def parse_datetime():
... date1, time1 = '2012-09-08', '12:23:33'
... date2, time2 = '2012-09-08', '12:23:33'
... dt1 = datetime.datetime.strptime(date1 + ' ' + time1, "%Y-%m-%d %H:%M:%S")
... dt2 = datetime.datetime.strptime(date2 + ' ' + time2, "%Y-%m-%d %H:%M:%S")
... (dt1 - dt2).total_seconds()
...
>>> def parse_time():
... d1 = time.strptime(date1 + ' ' + time1, "%Y-%m-%d %H:%M:%S")
... d2 = time.strptime(date2 + ' ' + time2, "%Y-%m-%d %H:%M:%S")
... seconds1 = time.mktime(d1)
... seconds2 = time.mktime(d2)
... seconds1 - seconds2
...
>>> timeit.timeit('test()', 'from __main__ import parse_datetime as test', number=10000)
0.6590030193328857
>>> timeit.timeit('test()', 'from __main__ import parse_time as test', number=10000)
0.7742340564727783

第二种方法仅使用 time.strptime() 函数(直接输出时间元组)。

据我所知,没有更快的方法来解析日期时间字符串。

关于python - 使用 python 将字符串时间戳转换为纪元时间的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12437500/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com