将纪元时间转换为date时间

我从其余的时间得到的回应是一个时代格式

start_time = 1234566 end_time = 1234578 

我想在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 

请build议我怎样才能做到这一点?

另外,为什么我得到TypeError: a float is required

 >>> getbbb_class.end_time = 1347516459425 >>> mend = time.gmtime(getbbb_class.end_time).tm_hour Traceback (most recent call last): ... TypeError: a float is required 

要将您的时间值(float或int)转换为格式化的string,请使用:

 time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1347517370)) 

你也可以使用datetime

 >>> import datetime >>> datetime.datetime.fromtimestamp(1347517370).strftime('%c') '2012-09-13 02:22:50' 

这是你需要的

 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' 

请input一个float而不是int ,而其他TypeError应该消失。

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

尝试这个:

 >>> 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是一个string。 您可以将其转换为数字,如: float(getbbb_class.end_time)

 #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命令。

首先从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()的参数是time.gmtime()就是整数。

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