2010-03-21 98 views
19

我需要生成YYYYMMDDHHmmSSOHH'mm的形式的本地時間戳」。 OHH'mm'是+, - ,Z之一,然後是小時和分鐘,然後是'。的Python:日期,時間格式

請,我怎麼得到這樣一個時間戳,表示本地時區和可能的夏令時?

+0

你在哪裏找時間格式化?你嘗試了什麼?你得到了什麼錯誤? – 2010-03-21 14:28:36

+0

我讀了標準庫文檔,他們混淆了什麼時區去... – TarGz 2010-03-21 14:54:15

+0

「混淆」?可能意味着什麼。爲了幫助他人解決同樣的問題,你能否提供引起困惑的報價或鏈接? – 2010-03-21 20:11:30

回答

28
import time 

localtime = time.localtime() 
timeString = time.strftime("%Y%m%d%H%M%S", localtime) 

# is DST in effect? 
timezone = -(time.altzone if localtime.tm_isdst else time.timezone) 
timeString += "Z" if timezone == 0 else "+" if timezone > 0 else "-" 
timeString += time.strftime("%H'%M'", time.gmtime(abs(timezone))) 
+0

這只是讓我「20100321142049-01'00'」:) – badp 2010-03-21 13:21:21

+0

正是我想要的! – TarGz 2010-03-21 14:28:56

+0

哦,不!有一個錯誤。比方說,有人住在意大利,時區則是+ 01'00' ,而不是-01'00' ...... – TarGz 2010-03-21 14:51:38

8

time.strftime將用於執行操作,

而在Linux,%z只會給你-HHMM格式,如果環境變量設置正確。

>>> os.environ['TZ'] = 'EST' 
>>> time.strftime('%x %X %z') 
'03/21/10 08:16:33 -0500' 
+0

如何?沒有辦法獲得時區偏移量,%Z只獲取時區名稱..? – TarGz 2010-03-21 12:58:28

+0

@TarGz - time.timezone已經以秒爲單位本地時間區偏移,可能要結合兩個,使其工作 – YOU 2010-03-21 13:08:16

+0

看來,%z是pltaform依賴 – TarGz 2010-03-21 14:30:52