Tom*_*Tom 29 python datetime unix-timestamp
如何将格式的人类可读时间转换20.12.2016 09:38:42,76为Unix时间戳(以毫秒为单位)?我发现了很多类似的问题,但没有找到这个具体的问题/答案.
Mil*_*ilo 42
在Python 3中,这可以分两步完成:
datetimeobjectdatetime对象的时间戳乘以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)
Run Code Online (Sandbox Code Playgroud)
输出:
1482223122760.0
Run Code Online (Sandbox Code Playgroud)
strptime接受您的时间字符串和格式字符串作为输入.该TIMESTRING(第一个参数)指定什么你真的想转换为datetime对象.格式字符串(第二个参数)指定您传递的字符串的实际格式.
%d - 作为零填充十进制数的月中的某天.%m - 月份为零填充十进制数.%Y - 以十进制数表示的世纪年份%H - 小时(24小时制)作为零填充十进制数.%M - 分钟为零填充十进制数.%S - 第二个作为零填充十进制数.%f - 微秒作为十进制数,左边填零.Iva*_*ass 14
对于那些在不解析和丢失毫秒的情况下搜索答案的人,给出的dt_obj是一个日期时间:
仅python3,优雅
int(dt_obj.timestamp() * 1000)
Run Code Online (Sandbox Code Playgroud)
python2和python3兼容:
import time
int(time.mktime(dt_obj.utctimetuple()) * 1000 + dt_obj.microsecond / 1000)
Run Code Online (Sandbox Code Playgroud)
对于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)))
Run Code Online (Sandbox Code Playgroud)
输出:
1482248322760
2016-12-20 09:38:42.760000
Run Code Online (Sandbox Code Playgroud)
您需要使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88684 次 |
| 最近记录: |