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

python~time模組詳解

time模組

 在開始之前,首先要說明這幾點:

    在Python中,通常有這幾種方式來表示時間:1)時間戳 2)格式化的時間字串 3)元組(struct_time)共九個元素。由於Python的time模組實現主要呼叫C庫,所以各個平臺可能有所不同。

    UTC(Coordinated Universal Time,世界協調時)亦即格林威治天文時間,世界標準時間。在中國為UTC+8。DST(Daylight Saving Time)即夏令時。

    時間戳(timestamp)的方式:通常來說,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。我們執行“type(time.time())”,返回的是float型別。返回時間戳方式的函式主要有time(),clock()等。

    元組(struct_time)方式:struct_time元組共有9個元素,返回struct_time的函式主要有gmtime(),localtime(),strptime()。下面列出這種方式元組中的幾個元素:

1.time.localtime()

將一個時間戳轉換為當前時區的struct_time。若引數未提供,則以當前時間為準

>>> time.localtime()

time.struct_time(tm_year=2018, tm_mon=7, tm_mday=4, tm_hour=16, tm_min=36, tm_sec=48, tm_wday=2, tm_yday=185, tm_isdst=0)

>>> time.localtime(1530692453.3236666)

time.struct_time(tm_year=2018, tm_mon=7, tm_mday=4, tm_hour=16, tm_min=20, tm_sec=53, tm_wday=2, tm_yday=185, tm_isdst=0)

索引(Index)

屬性(Attribute)

值(Values)

0

tm_year(年)

比如2011

1

tm_mon(月)

1 - 12

2

tm_mday(日)

1 - 31

3

tm_hour(時)

0 - 23

4

tm_min(分)

0 - 59

5

tm_sec(秒)

0 - 61

6

tm_wday(weekday)

0 - 6(0表示週日)

7

tm_yday(一年中的第幾天)

1 - 366

8

tm_isdst(是否是夏令時)

預設為-1

2.time.gmtime()

localtime是把從1970-1-1零點零分到當前時間系統所偏移的秒數時間轉換為本地時間,而gmtime函式轉換後的時間沒有經過時區變換,是UTC時間

和localtime()方法類似,gmtime()方法是將一個時間戳轉換為UTC時區(0時區)的struct_time

>>> time.gmtime()

time.struct_time(tm_year=2018, tm_mon=7, tm_mday=4, tm_hour=8, tm_min=38, tm_sec=48, tm_wday=2, tm_yday=185, tm_isdst=0)

>>> time.gmtime(1530692453.3236666)

time.struct_time(tm_year=2018, tm_mon=7, tm_mday=4, tm_hour=8, tm_min=20, tm_sec=53, tm_wday=2, tm_yday=185, tm_isdst=0)

注意:這裡的tm_wday=2表示的是周幾,但是要在這個返回值的基礎上往後推一天,即表示的是週三,而不是週二

3.time.time()

返回當前時間的時間戳

>>> time.time()

1530693738.8271327

4.time.mktime(t)

將一個struct_time轉化為時間戳

>>> time.mktime(time.localtime())

1530693858.0

5.time.sleep(secs)

休眠,執行緒推遲指定的時間執行,單位為秒

>>> time.sleep(1)

>>> time.sleep(10)

6.time.clock()

WINDOWS中,第一次呼叫,返回的是程序執行的實際時間。而第二次之後的呼叫是自第一次呼叫以後到現在的執行時間。

>>> time.clock()

7.901231446427083e-07

>>> time.clock()

1.5485864499411557

>>> time.clock()

2.2367493385681625

>>> time.clock()

2.910795096969838

其中第一個clock()輸出的是程式執行時間

第二、三個、四個clock()輸出的都是與第一個clock的時間間隔

7.time.asctime()

把一個表示時間的元組或者struct_time表示為這種形式:'Sun Jun 20 23:21:05 1993'。如果沒有引數,將會將time.localtime()作為引數傳入。

>>> time.asctime()

'Wed Jul  4 16:56:34 2018'

8.time.ctime()

把一個時間戳(按秒計算的浮點數)轉化為time.asctime()的形式。如果引數未給或者為None的時候,將會預設time.time()為引數。它的作用相當於time.asctime(time.localtime(secs))。

>>> time.ctime(time.time())

'Wed Jul  4 17:06:20 2018'

>>> time.asctime(time.localtime())

'Wed Jul  4 17:07:46 2018'

9.time.strftime(format,[t])

把一個代表時間的元組或者struct_time(如由time.localtime()和time.gmtime()返回)轉化為格式化的時間字串。如果t未指定,將傳入time.localtime()

>>> time.strftime("%Y-%m-%d %H:%m:%S")

'2018-07-05 11:07:52'

>>> time.strftime("%Y-%m-%d %X",time.localtime())

'2018-07-05 11:28:04'

10.time.strptime(string,[format])

把一個格式化時間字串轉化為struct_time。實際上它和strftime()是逆操作。

>>> time.strptime("2018-07-05 11:07:52","%Y-%m-%d %X")

time.struct_time(tm_year=2018, tm_mon=7, tm_mday=5, tm_hour=11, tm_min=7, tm_sec=52, tm_wday=3, tm_yday=186, tm_isdst=-1)

根據之前描述,在Python中共有三種表達方式:1)timestamp 2)tuple或者struct_time 3)格式化字串。

11.拼接定義的日期,包含中文

import time
import locale
locale.setlocale(locale.LC_CTYPE, 'chinese')
strTime=time.strftime("%Y年-%m月-%d日 %H:%M:%S",time.localtime())
print (strTime)

#輸出結果為:
2018年-09月-25日 09:46:39