Python標准庫02 時間與日期 (time, datetime包)


作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝!

 

Python具有良好的時間和日期管理功能。實際上,計算機只會維護一個掛鍾時間(wall clock time),這個時間是從某個固定時間起點到現在的時間間隔。時間起點的選擇與計算機相關,但一台計算機的話,這一時間起點是固定的。其它的日期信息都是從這一時間計算得到的。此外,計算機還可以測量CPU實際上運行的時間,也就是處理器時間(processor clock time),以測量計算機性能。當CPU處於閑置狀態時,處理器時間會暫停。

 

time包

time包基於C語言的庫函數(library functions)。Python的解釋器通常是用C編寫的,Python的一些函數也會直接調用C語言的庫函數。

import time print(time.time())   # wall clock time, unit: second
print(time.clock())  # processor clock time, unit: second

 

time.sleep()可以將程序置於休眠狀態,直到某時間間隔之后再喚醒程序,讓程序繼續運行。

import time print('start') time.sleep(10)     # sleep for 10 seconds
print('wake up')

當我們需要定時地查看程序運行狀態時,就可以利用該方法。

 

time包還定義了struct_time對象。該對象實際上是將掛鍾時間轉換為年、月、日、時、分、秒……等日期信息,存儲在該對象的各個屬性中(tm_year, tm_mon, tm_mday...)。下面方法可以將掛鍾時間轉換為struct_time對象:

st = time.gmtime()      # 返回struct_time格式的UTC時間
st = time.localtime()   # 返回struct_time格式的當地時間, 當地時區根據系統環境決定。

s = time.mktime(st)  # 將struct_time格式轉換成wall clock time

 

datetime包

1) 簡介

datetime包是基於time包的一個高級包, 為我們提供了多一層的便利。

datetime可以理解為date和time兩個組成部分。date是指年月日構成的日期(相當於日歷),time是指時分秒微秒構成的一天24小時中的具體時間(相當於手表)。你可以將這兩個分開管理(datetime.date類,datetime.time類),也可以將兩者合在一起(datetime.datetime類)。由於其構造大同小異,我們將只介紹datetime.datetime類。

比如說我現在看到的時間,是2012年9月3日21時30分,我們可以用如下方式表達:

import datetime t = datetime.datetime(2012,9,3,21,30) print(t)

所返回的t有如下屬性:

hour, minute, second, microsecond

year, month, day, weekday   # weekday表示周幾

 

2) 運算

datetime包還定義了時間間隔對象(timedelta)。一時間點(datetime)加上一個時間間隔(timedelta)可以得到一個新的時間點(datetime)。比如今天的上午3點加上5個小時得到今天的上午8點。同理,兩個時間點相減會得到一個時間間隔。

import datetime t      = datetime.datetime(2012,9,3,21,30)
t_next = datetime.datetime(2012,9,5,23,30) delta1
= datetime.timedelta(seconds = 600) delta2 = datetime.timedelta(weeks = 3) print(t + delta1) print(t + delta2)
print(t_next - t)

在給datetime.timedelta傳遞參數(如上的seconds和weeks)的時候,還可以是days, hours, milliseconds, microseconds。

 

兩個datetime對象還可以進行比較。比如使用上面的t和t_next:

print(t > t_next)

 

3) datetime對象與字符串轉換

假如我們有一個的字符串,我們如何將它轉換成為datetime對象呢?

一個方法是用上一講的正則表達式來搜索字符串。但時間信息實際上有很明顯的特征,我們可以用格式化讀取的方式讀取時間信息。

from datetime import datetime
format = "output-%Y-%m-%d-%H%M%S.txt"
str
= "output-1997-12-23-030000.txt"
t
= datetime.strptime(str, format)

strptime, p = parsing


我們通過format來告知Python我們的str字符串中包含的日期的格式。在format中,%Y表示年所出現的位置, %m表示月份所出現的位置……。

反過來,我們也可以調用datetime對象的strftime()方法,來將datetime對象轉換為特定格式的字符串。比如上面所定義的t_next,

print(t_next.strftime(format))

strftime, f = formatting

具體的格式寫法可參閱官方文檔。 如果是Linux系統,也可查閱date命令的手冊($man date),兩者相通。

 

總結

時間,休眠

datetime, timedelta

格式化時間


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM