Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将纪元时间(毫秒)转换为日期时间_Python_Ruby_Datetime_Epoch - Fatal编程技术网

Python 将纪元时间(毫秒)转换为日期时间

Python 将纪元时间(毫秒)转换为日期时间,python,ruby,datetime,epoch,Python,Ruby,Datetime,Epoch,我使用ruby脚本将iso时间戳转换为epoch,我正在解析的文件具有以下时间戳结构: 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('

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

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'
>>> 

我想知道这和我的格式有关吗

这些是毫秒,只要除以1000,因为gmtime需要秒

time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(1236472051807/1000.0))
使用:

%f
指令仅受支持,不受支持

更新备选方案,使用:


我是钟摆迷。。。所以

导入钟摆
钟摆。从时间戳(1236472051807/1000.0,tz='America/Toronto')
产出:

DateTime(2019、12、20、10、55、10,tzinfo=时区(“美国/多伦多”))


对于所有查找Gmail API的
internalDate
的搜索。。。上面的内容对我来说很有用,而且比
日期
标题更准确。

我明白了,但我会正确地减去毫秒数….?是的。。。我想您可以通过执行
timestamp/1000.0
来保存它们,它将以十进制形式传递它们。。。(虽然我不确定你是否能检索到它们)是否有一个等效于gmtime的输入值,以微或毫秒为单位?
seconds==millizes/1000
。。。如果你把它放在一个函数中,你会有一个接受毫秒的gmtime。。。微秒你只要除以10^6是的我想建议这个。。。但是我的回答很好(+1用于保留显示中的毫秒:))回答也很好@JoranBeasley您的回答也很好:)谢谢各位。请注意@falsetru first answer除以浮点
1000.0
,从而保持datetime中的毫秒。谢谢。正是我想要的注意:
fromtimestamp
需要一个int或float。如果你给它一个小数;它的行为取决于您的python版本。一些python版本(
>>> 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'
>>> 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'