python time模組詳解
最常用的time.time()返回的是一個浮點數,單位為秒。但strftime處理的型別是time.struct_time,實際上是一個 tuple。strptime和localtime都會返回這個型別。
>>> import time
>>> t = time.time()
>>> t
1202872416.4920001
>>> type(t)
>>> t = time.localtime()
>>> t
(2008, 2, 13, 10, 56, 44, 2, 44, 0)
>>> type(t)
>>> time.strftime('%Y-%m-%d', t)
'2008-02-13'
>>> time.strptime('2008-02-14', '%Y-%m-%d')
(2008, 2, 14, 0, 0, 0, 3, 45, -1)
-------------------------------------
我們先匯入必須用到的一個module
>>> import time
設定一個時間的格式,下面會用到
>>>ISOTIMEFORMAT='%Y-%m-%d %X'
看一下當前的時間,和其他很多語言相似這是從epoch(1970 年 1 月 1 日 00:00:00)開始到當前的秒數。
>>> time.time()
1180759620.859
上面的看不懂,換個格式來看看
>>> time.localtime()
(2007, 6, 2, 12, 47, 7, 5, 153, 0)
localtime返回tuple格式的時間,有一個和它類似的函式叫gmtime(),2個函式的差別是時區,gmtime()返回的是0時區的值,localtime返回的是當前時區的值。
>>> time.strftime( ISOTIMEFORMAT, time.localtime() )
'2007-06-02 12:54:29′
用上我們的時間格式定義了,使用strftime對時間做一個轉換,如果取現在的時間,time.localtime() 可以不用。
>>> time.strftime( ISOTIMEFORMAT, time.localtime( time.time() ) )
'2007-06-02 12:54:31′
>>> time.strftime( ISOTIMEFORMAT, time.gmtime( time.time() ) )
'2007-06-02 04:55:02′
上面展示了gmtime和localtime的區別。
檢視時區用
>>> time.timezone
-28800
上面的值是一個秒值,是當前時區和0時區相差的描述,-28800=-8*3600,即為東八區。
帖幾個簡單的函式
def ISOString2Time( s ):
'''
convert a ISO format time to second
from:2006-04-12 16:46:40 to:23123123
把一個時間轉化為秒
'''
return time.strptime( s, ISOTIMEFORMAT )
def Time2ISOString( s ):
'''
convert second to a ISO format time
from: 23123123 to: 2006-04-12 16:46:40
把給定的秒轉化為定義的格式
'''
return time.strftime( ISOTIMEFORMAT, time.localtime( float( s ) ) )
def dateplustime( d, t ):
'''
d=2006-04-12 16:46:40
t=2小時
return 2006-04-12 18:46:40
計算一個日期相差多少秒的日期,time2sec是另外一個函式,可以處理,3天,13分鐘,10小時等字串,回頭再來寫這個,需要結合正則表示式。
'''
return Time2ISOString( time.mktime( ISOString2Time( d ) ) time2sec( t ) )
def dateMinDate( d1, d2 ):
'''
minus to iso format date,return seconds
計算2個時間相差多少秒
'''
d1=ISOString2Time( d1 )
d2=ISOString2Time( d2 )
return time.mktime( d1 )-time.mktime( d2 )