python - 以毫秒为单位的纪元时间转换为日期时间

标签 python ruby datetime epoch

我使用 ruby​​ 脚本将 iso 时间戳转换为纪元,我正在解析的文件具有以下时间戳结构:

2009-03-08T00:27:31.807

由于我想保持毫秒,我使用以下 ruby​​ 代码将其转换为纪元时间:

irb(main):010:0> DateTime.parse('2009-03-08T00:27:31.807').strftime("%Q")
=> "1236472051807"

但在 python 中我尝试了以下操作:

import time 
time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(1236472051807))

但是我没有找回原来的时间日期时间,

>>> time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(1236472051807))
'41152-03-29 02:50:07'
>>> 

我想知道这与我的格式化方式有关吗?

最佳答案

使用 datetime.datetime.fromtimestamp :

>>> import datetime
>>> s = 1236472051807 / 1000.0
>>> datetime.datetime.fromtimestamp(s).strftime('%Y-%m-%d %H:%M:%S.%f')
'2009-03-08 09:27:31.807000'

%f 指令仅受 datetime.datetime.strftime 支持,而不是 time.strftime .

更新 替代使用 % , str.format :

>>> import time
>>> s, ms = divmod(1236472051807, 1000)  # (1236472051, 807)
>>> '%s.%03d' % (time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(s)), ms)
'2009-03-08 00:27:31.807'
>>> '{}.{:03d}'.format(time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(s)), ms)
'2009-03-08 00:27:31.807'

关于python - 以毫秒为单位的纪元时间转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21787496/

相关文章:

arrays - 分割数组的每一项

c# - 比较日期时间的最可靠方法?

ruby - 在 Ruby 中获取给定进程的父 ID

javascript - rails : accessing an instance variable in a js. erb 文件

java - 国家/地区本地 TZD 格式的纪元时间戳

java - 使用 Java-8 LocaldateTime 比较 future 三天的日期和时间

python - 使用 BeautifulSoup 删除所有内联样式

Go lang 中的 Python asyncio 事件循环等价物

python - 在带有标记文本的 altair 中对条形图进行排序时出现问题

python - h5py 安装后报错