Python 将历元时间转换为日期时间

Python 将历元时间转换为日期时间,python,Python,我从其他人那里得到了回应,这是一种划时代的格式,就像 start_time = 1234566 end_time = 1234578 我想将epoch秒转换为MySQL格式的time,这样我就可以在MySQL数据库中存储差异 我试过: >>> import time >>> time.gmtime(123456) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=2, tm_hour=10, tm_min=17

我从其他人那里得到了回应,这是一种划时代的格式,就像

start_time = 1234566
end_time = 1234578
我想将epoch秒转换为MySQL格式的time,这样我就可以在MySQL数据库中存储差异

我试过:

>>> import time
>>> time.gmtime(123456)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=2, tm_hour=10, tm_min=17, tm_sec=36, tm_wday=4, tm_yday=2, tm_isdst=0)
以上结果不是我所期望的。我希望它是这样的

2012-09-12 21:00:00
请建议我如何做到这一点

而且, 为什么我得到
TypeError:对于

>>getbbb_class.end_time=1347516459425
>>>mend=time.gmtime(getbbb\u class.end\u time).tm\u小时
回溯(最近一次呼叫最后一次):
...
TypeError:需要浮点
试试这个:

>>> import time
>>> time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(1347517119))
'2012-09-12 23:18:39'
同样在MySQL中,您可以喜欢:


对于第二个问题,可能是因为
getbbb\u class.end\u time
是一个字符串。您可以将其转换为数字,如:
float(getbbb\u class.end\u time)

man gmtime开始的历元中的第一点信息

The ctime(), gmtime() and localtime() functions all take an argument of data type time_t which represents calendar  time.   When  inter-
       preted  as  an absolute time value, it represents the number of seconds elapsed since 00:00:00 on January 1, 1970, Coordinated Universal
       Time (UTC).
了解时代应该是怎样的

>>> time.time()
1347517171.6514659
>>> time.gmtime(time.time())
(2012, 9, 13, 6, 19, 34, 3, 257, 0)

只需确保传递给
time.gmtime()
的参数为整数。

要将时间值(float或int)转换为格式化字符串,请使用:

time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1347517370))
这就是你需要的

In [1]: time.time()
Out[1]: 1347517739.44904

In [2]: time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time()))
Out[2]: '2012-09-13 06:31:43'
请输入一个
float
而不是
int
,其他
TypeError
应该消失

mend = time.gmtime(float(getbbb_class.end_time)).tm_hour

您还可以使用
datetime

>>> import datetime
>>> datetime.datetime.fromtimestamp(1347517370).strftime('%c')
  '2012-09-13 02:22:50'
这有点冗长,但它来自unix中的date命令

>>> import datetime
>>> datetime.datetime.fromtimestamp(1347517370).strftime('%Y-%m-%d %H:%M:%S')
'2012-09-13 14:22:50' # Local time
要获取UTC,请执行以下操作:

>>> datetime.datetime.utcfromtimestamp(1347517370).strftime('%Y-%m-%d %H:%M:%S')
  '2012-09-13 06:22:50'

如果有以毫秒为单位的历元,则可能的解决方案是转换为秒:

import time
time.ctime(milliseconds/1000)

有关更多
time
functions:

time.strftime(“%Y-%m-%d%H:%m:%S”,time.localtime(1347517491247))“44671-02-17 11:44:07”为什么?在您的示例中时间“1347517491247”来自哪里?您正在使用的是实时值吗?实际上,我是从bigbluebutton servertime.strftime(“%Y-%m-%d%H:%m:%S',time.localtime(1347517491.247))“2012-09-13 08:24:51”您的值是MSSE中的历元,以获取格式字符串的更多信息此转换的时区是哪个,如果我想在特定时区中该怎么办@Garg10 May历元时间始终为UTC偏移量0,因此字符串也将为UTC偏移量0。这与祖鲁时区(+00:00)相等。您可以在此处阅读更多内容:python 3中有“utcfromtimestamp”函数来获取UTC时间。使用此答案的好处是
strftime()
的datetime版本支持更多格式占位符,尤其是时间的微秒端口的%f。由于未知原因,
time.strftime()
不支持该选项,尽管微秒可以用输入到
time.localtime()
的浮点值来表示。相反,它给了我这个-
““Sat Oct 31 18:30:00 2020”
。如您所述-
'2012-09-13 02:22:50'
。它应该是-
%Y/%m/%d,%H:%m:%S“
doc说它更喜欢前者
>>> datetime.datetime.utcfromtimestamp(1347517370).strftime('%Y-%m-%d %H:%M:%S')
  '2012-09-13 06:22:50'
import time
time.ctime(milliseconds/1000)