将纪元时间转换为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'