python 时间函数学习了一大堆,那到底怎么将一个格林威治的时间字符串转换为本地时间呢?


这里将以一个格林威治时间字符串转换为北京时间为例进行说明。


格林威治时间字符串:2015-08-31T11:20:48


首先将这个字符串转换为表示时间的tuple格式:

>>> t=time.strptime('2015-08-31T11:20:48','%Y-%m-%dT%H:%M:%S')
>>> t
time.struct_time(tm_year=2015, tm_mon=8, tm_mday=31, tm_hour=11, tm_min=20, tm_sec=48, tm_wday=0, tm_yday=243, tm_isdst=-1)


此时,字符串就可以通过touple格式进行表示了。那只要将表示时(hour)的数字加上8,再以我们能看懂的日志格式表示出来就OK了。但python中,tuple是不能够被改变的(概念有点模糊了,应该是)。


那只有这么办了

>>> i=list(t)
>>> i
[2015, 8, 31, 11, 20, 48, 0, 243, -1]
>>> i[3] = i[3] + 8
>>> i
[2015, 8, 31, 19, 20, 48, 0, 243, -1]


此时,就差怎么表示成大家都能看懂的格式了。

>>> time.strftime('%Y-%m-%d %H:%M:%S',tuple(i))
'2015-08-31 19:20:48'


这样,应该符合我们的预期了。呵呵!好伤脑筋!