1. 程式人生 > >python time模組詳解

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 )