我得到的回复是一个纪元时间格式的

start_time = 1234566
end_time = 1234578

我想转换的epoch秒在MySQL格式时间,以便我可以存储在我的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_class.end_time).tm_hour
Traceback (most recent call last):
  ...
TypeError: a float is required

当前回答

试试这个:

>>> import time
>>> time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(1347517119))
'2012-09-12 23:18:39'

同样在MySQL中,你可以像这样FROM_UNIXTIME:

INSERT INTO tblname VALUES (FROM_UNIXTIME(1347517119))

关于你的第二个问题,可能是因为getbbb_class。End_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()的参数是整数。

如果你的epoch以毫秒为单位,可能的解决方案是转换为秒:

import time
time.ctime(milliseconds/1000)

更多时间功能:https://docs.python.org/3/library/time.html#functions

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

你也可以使用datetime:

>>> import datetime
>>> datetime.datetime.fromtimestamp(1347517370).strftime('%c')
  '2012-09-13 02:22:50'
#This adds 10 seconds from now.
from datetime import datetime
import commands

date_string_command="date +%s"
utc = commands.getoutput(date_string_command)
a_date=datetime.fromtimestamp(float(int(utc))).strftime('%Y-%m-%d %H:%M:%S')
print('a_date:'+a_date)
utc = int(utc)+10
b_date=datetime.fromtimestamp(float(utc)).strftime('%Y-%m-%d %H:%M:%S')
print('b_date:'+b_date)

这有点啰嗦,但它来自unix中的date命令。