将 python 日期时间转换为以毫秒为单位的时间戳
Convert python datetime to timestamp in milliseconds
如何将人类可读的时间(例如 20.12.2016 09:38:42,76
转换为 毫秒 的 Unix 时间戳?
在 Python 3 中,这可以分两步完成:
- 将时间字符串转换为
datetime
对象
- 将
datetime
对象的时间戳乘以 1000 以将其转换为毫秒。
例如像这样:
from datetime import datetime
dt_obj = datetime.strptime('20.12.2016 09:38:42,76',
'%d.%m.%Y %H:%M:%S,%f')
millisec = dt_obj.timestamp() * 1000
print(millisec)
输出:
1482223122760.0
strptime
接受您的时间字符串和格式字符串作为输入。时间字符串(第一个参数)指定 什么 您实际想要转换为 datetime
对象。格式字符串(第二个参数)指定您传递的字符串的实际 格式。
这里是official documentation格式说明符的解释:
%d
- 以 zero-padded 十进制数表示的月中的第几天。
%m
- zero-padded 十进制数形式的月份。
%Y
- 以十进制表示世纪的年份
%H
- 小时(24 小时制)作为 zero-padded 十进制数。
%M
- zero-padded 十进制数的分钟。
%S
- 秒为 zero-padded 十进制数。
%f
- 微秒为十进制数,zero-padded 为 6 位数字。
您需要使用 strptime 解析您的时间格式。
>>> import time
>>> from datetime import datetime
>>> ts, ms = '20.12.2016 09:38:42,76'.split(',')
>>> ts
'20.12.2016 09:38:42'
>>> ms
'76'
>>> dt = datetime.strptime(ts, '%d.%m.%Y %H:%M:%S')
>>> time.mktime(dt.timetuple())*1000 + int(ms)*10
1482223122760.0
对于Python2.7
可以格式化成秒再乘以1000换算成毫秒。
from datetime import datetime
d = datetime.strptime("20.12.2016 09:38:42,76", "%d.%m.%Y %H:%M:%S,%f").strftime('%s')
d_in_ms = int(d)*1000
print(d_in_ms)
print(datetime.fromtimestamp(float(d)))
输出:
1482206922000
2016-12-20 09:38:42
对于 Python2.7 - 修改 MYGz 的答案以不去除毫秒:
from datetime import datetime
d = datetime.strptime("20.12.2016 09:38:42,76", "%d.%m.%Y %H:%M:%S,%f").strftime('%s.%f')
d_in_ms = int(float(d)*1000)
print(d_in_ms)
print(datetime.fromtimestamp(float(d)))
输出:
1482248322760
2016-12-20 09:38:42.760000
对于那些搜索答案不解析而丢失毫秒的人,
给定 dt_obj
是一个日期时间:
python3而已,优雅
int(dt_obj.timestamp() * 1000)
python2 和 python3 兼容:
import time
int(time.mktime(dt_obj.utctimetuple()) * 1000 + dt_obj.microsecond / 1000)
很多这些答案都没有保留日期时间的毫秒数。这对我有用
def datetime_to_ms_epoch(dt):
microseconds = time.mktime(dt.timetuple()) * 1000000 + dt.microsecond
return int(round(microseconds / float(1000)))
如何将人类可读的时间(例如 20.12.2016 09:38:42,76
转换为 毫秒 的 Unix 时间戳?
在 Python 3 中,这可以分两步完成:
- 将时间字符串转换为
datetime
对象 - 将
datetime
对象的时间戳乘以 1000 以将其转换为毫秒。
例如像这样:
from datetime import datetime
dt_obj = datetime.strptime('20.12.2016 09:38:42,76',
'%d.%m.%Y %H:%M:%S,%f')
millisec = dt_obj.timestamp() * 1000
print(millisec)
输出:
1482223122760.0
strptime
接受您的时间字符串和格式字符串作为输入。时间字符串(第一个参数)指定 什么 您实际想要转换为 datetime
对象。格式字符串(第二个参数)指定您传递的字符串的实际 格式。
这里是official documentation格式说明符的解释:
%d
- 以 zero-padded 十进制数表示的月中的第几天。%m
- zero-padded 十进制数形式的月份。%Y
- 以十进制表示世纪的年份%H
- 小时(24 小时制)作为 zero-padded 十进制数。%M
- zero-padded 十进制数的分钟。%S
- 秒为 zero-padded 十进制数。%f
- 微秒为十进制数,zero-padded 为 6 位数字。
您需要使用 strptime 解析您的时间格式。
>>> import time
>>> from datetime import datetime
>>> ts, ms = '20.12.2016 09:38:42,76'.split(',')
>>> ts
'20.12.2016 09:38:42'
>>> ms
'76'
>>> dt = datetime.strptime(ts, '%d.%m.%Y %H:%M:%S')
>>> time.mktime(dt.timetuple())*1000 + int(ms)*10
1482223122760.0
对于Python2.7
可以格式化成秒再乘以1000换算成毫秒。
from datetime import datetime
d = datetime.strptime("20.12.2016 09:38:42,76", "%d.%m.%Y %H:%M:%S,%f").strftime('%s')
d_in_ms = int(d)*1000
print(d_in_ms)
print(datetime.fromtimestamp(float(d)))
输出:
1482206922000
2016-12-20 09:38:42
对于 Python2.7 - 修改 MYGz 的答案以不去除毫秒:
from datetime import datetime
d = datetime.strptime("20.12.2016 09:38:42,76", "%d.%m.%Y %H:%M:%S,%f").strftime('%s.%f')
d_in_ms = int(float(d)*1000)
print(d_in_ms)
print(datetime.fromtimestamp(float(d)))
输出:
1482248322760
2016-12-20 09:38:42.760000
对于那些搜索答案不解析而丢失毫秒的人,
给定 dt_obj
是一个日期时间:
python3而已,优雅
int(dt_obj.timestamp() * 1000)
python2 和 python3 兼容:
import time
int(time.mktime(dt_obj.utctimetuple()) * 1000 + dt_obj.microsecond / 1000)
很多这些答案都没有保留日期时间的毫秒数。这对我有用
def datetime_to_ms_epoch(dt):
microseconds = time.mktime(dt.timetuple()) * 1000000 + dt.microsecond
return int(round(microseconds / float(1000)))