算法 - 如何使用python计算2个毫秒级字符串的计算
高洛峰
高洛峰 2017-04-18 10:34:51
0
3
674

比如从源头数据可以获得2个时间,其形式为
"2017-03-09 08:51:51 615"
"2017-03-09 08:52:21 601"
要计算前后者的时间差

自己百度搜索了很多相关内容,都无法解决这个问题,datetime不知道如何转换毫秒,timedelta无法转换年份
因为业务的精度要求,不能省略后面的毫秒,要计算两者的时间差。当然基本上都是同一天,但考虑到业务是24小时进行的,也不能忽略前面的日期,万一问题正好发生在0点前后呢

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(3)
迷茫

datetimeAnda boleh menukar milisaat dan ketepatan mencapai mikrosaat. Atau mungkin saya tidak memahami soalan dengan jelas? Contohnya, anda boleh menggunakan aksara format %f, seperti yang ditunjukkan di bawah:

>>> t1 = "2017-03-09 08:51:51 615"
>>> t2 = "2017-03-09 08:52:21 601"
>>> from datetime import datetime
>>> a = datetime.strptime(t1, "%Y-%m-%d %H:%M:%S %f")
>>> b = datetime.strptime(t2, "%Y-%m-%d %H:%M:%S %f")
>>> c = b - a
>>> c
datetime.timedelta(0, 29, 986000)
>>> c.microseconds
986000

Yang ketiga dalam c di sini ialah mikrosaat.

巴扎黑

2017-03-09 08:51:51Tukarkannya kepada cap masa dan kemudian sambungkan rentetan itu kepada "615", iaitu cap masa dengan ketepatan milisaat tidak bolehkah dua nilai cap waktu itu dikira?

巴扎黑

Cap masa adalah dalam saat, jadi darab dengan 1000 ialah milisaat dan mikrosaat dibahagikan dengan 1000 juga milisaat

# coding: utf-8

from datetime import datetime
import time

format = '%Y-%m-%d %H:%M:%S %f'
a = datetime.strptime("2017-03-09 08:51:51 615", format)
b = datetime.strptime("2017-03-09 08:52:21 601", format)

t1 = time.mktime(a.timetuple()) * 1000 + a.microsecond / 1000
t2 = time.mktime(b.timetuple()) * 1000 + b.microsecond / 1000

print t2 - t1
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan