2012-09-13 144 views
169

我正在從靜止的響應就像轉換大紀元一次進入日期時間

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 

請建議我如何才能做到這一點?

此外, 爲什麼我收到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 
+0

你肯定'1347516459425'?這不是一個有效的時代。試試'time.gmtime(float(str(i)[: - 6] +')。'+ str(i)[ - 6:]))'其中'i'是'1347516459425'。 –

+0

@Burhan你怎麼覺得這不是一個有效的時代? – user1667633

+1

因爲紀元只在〜10¹⁰的範圍內。嘗試使用time.ctime(1347516459.425),這會給你9月13日'12。記住小數。 –

回答

198

要將時間值(float或INT)轉換爲格式化字符串,使用:

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

time.strftime('%Y-%m-%d%H:%M:%S',time.localtime(1347517491247)) '44671-02-17 11:44:07'爲什麼? – user1667633

+2

你的例子中「1347517491247」來自何處?這是您使用的實時價值嗎? –

+0

實際上,我從bigbluebutton服務器獲得該值 – user1667633

6

試試這個:

>>> 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是一個嚴格的規定G。你可以將其轉換爲數字,如:float(getbbb_class.end_time)

1

首先在一個劃時代位信息從人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()是整數。

8

這是你需要

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 
134

您還可以使用datetime

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

中的更多信息,其中timezone會轉換,如果我想要在特定的時區。 ? – garg10may

+0

@ garg10may紀元時間始終是UTC偏移量0,所以字符串也會是UTC偏移量0.這與祖魯時區(+00:00)相等。你可以在這裏閱讀更多:https://www.timeanddate.com/time/zones/z – Devnetics

+0

有'utcfromtimestamp'函數獲取UTC時間在python 3。 – vwvolodya

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

2
>>> 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' 
相關問題