2010-03-21 97 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