python2.x time模組和datetime模組常用函式
time模組:
time模組用於取得Unix紀元時間戳,並加以處理。計算機的系統時鐘設定位特定的日期、時間和時區。內建的time模組讓Python程式能讀取系統時鐘的當前時間。
在time模組中,time.time()和time.sleep()函式是最有用的模組。
time.time()函式:返回一個浮點數,表示當前時刻的Unix紀元時間戳
1970年1月1日0點,即協調世界時間(UTC).time.time()函式返回自那一刻以來的秒數,是一個浮點值,這個數字稱為UNIX
紀元時間戳。
time.sleep(seconds)函式:讓程式暫停seconds引數指定的秒數
如果需要讓程式暫停一下,就呼叫time.sleep()函式,並傳入希望程式暫停的秒數
time.sleep(seconds)函式將阻塞(也就是說,它不會返回或讓程式執行其他程式碼),直到傳遞給time.sleep()的秒數流逝。
請注意,在IDLE中按Ctrl-C 不會中斷time.sleep()呼叫。IDLE會等待到暫停結束,再丟擲KeyboardInterrupt異常。
round()函式按照指定的精度四捨五入到一個浮點數。只要傳入要舍入的數字,再加上可選的第二行引數,指明需要傳入到小數點後多少位。
如果省略第二個引數,round()將數字四捨五入到最接近的整數。
datetime模組:
以方便的格式顯示日期,或對日期進行算術運算,(搞清楚205天前是什麼日期,或123天后是什麼日期)就應該用datatime模組。datetime模組有自己的datetime資料型別。datetime值表示一個特定的時刻。
import datetime
print datetime.datetime.now()
datetime.datetime.now()函式:返回當前時刻的datetime物件
返回一個datetime物件,表示當前的日期和時間,根據你的計算機的時鐘。這個物件包含當前時刻的年、月、日、時、
分、秒和微妙。
datetime.datetime(year,month,day,hour,minute,second)函式:返回引數指定的時刻的datetime物件
向它傳入代表年、月、日、時、分、秒的整數,得到特定時刻的datetime物件。這些整數將儲存在datetime物件的year、month、day、hour、minute、second屬性中。
import datetime
dt = datetime.datetime(2018,12,12,16,10,0) #2018-12-12 16:10:00
print dt.year,dt.month,dt.day,dt.hour,dt.minute,dt.second
datetime.datetime.fromtimestamp(epoch)函式:返回epoch時間戳引數表示的時刻的datetime物件。
Unix紀元時間戳可以通過datetime.datetime.fromtimestamp(),轉換為datetime物件。datetime物件的日期和時間將根據本地時區轉換。
datetime物件可以用比較操作符進行比較(==,> , <)。
timedelta資料型別:
datetime.timedelta(weeks,days,hours,minutes,seconds,milliseconds,microseconds)函式:返回一個表示一段時間的 timedelta物件。
該函式的關鍵字引數都是可選的,不包括month或year.
datetime模組還提供了timedelta資料型別,它表示一段時間,而不是一個時刻
import datetime
delta = datetime.timedelta(days=11, hours=10, minutes=9, seconds=8)
print delta.days,delta.seconds,delta.microseconds
print delta.total_seconds()
print str(delta)
要建立timedelta物件,就用datetime.timedelta()函式。
datetime.timedelta()函式接受關鍵字引數weaks,days,hours,minutes,seconds,milliseconds,microsenconds
沒有month和year關鍵字引數,因為月和年是可變的時間,依賴特定的月份或年份。
timedelta物件擁有的總時間以天,秒,微妙來表示。這些數字分別儲存在days,seconds,microseconds屬性中。
total_seconds()方法:用於timedelta物件,返回timedelta物件表示的秒數。返回以秒錶示的時間。
將一個timedelta物件傳入str(),將返回格式良好的、人類可讀的字串表示。
算數運算子可以用於對datetime值進行日期運算:
import datetime
dt = datetime.datetime.now()
thousand_days = datetime.timedelta(days = 1000)
print dt + thousand_days
利用+和-運算子,timedelta物件與datetime物件或其他timedelta物件相加或相減。
利用*和/運算子,timedelta物件可以乘以或除以整數或浮點數。
暫停直至特定日期:
time.sleep()方法可以暫停程式若干秒。利用一個while迴圈,可以讓程式暫停,知道一個特定的日期。
import datetime, time
hallo_ween2016 = datetime.datetime(2016,10,31,0,0,0)
while datetime.datetime.now() < hallo_ween2016:
time.sleep(1)
將datetime物件轉換為字串:
利用strftime()方法,可以將datetime物件顯示為字串。(strftime()函式名中的f表示格式,format)
strftime(format)方法:返回一個字串,用format字串中的定製格式化來表示datetime物件表示的時間。
該strftime()方法使用的指令類似於Python的字串格式化。
%Y 帶世紀的年份,例如‘2014’
%y 不帶世紀的年份,‘00’至‘99’
%m 數字表示的月份,‘01’至‘12’
%B 完整的月份,例如‘Novermber’
%b 簡寫的月份,例如‘Nov’
%d 一月中的第幾天,‘01’至‘31’
%j 一年中的第幾天,“001”至“366”
%w 一週中的第幾天,“0”週日至“6”週六
%A 完整的周幾,例如“Monday”
%a 簡寫的周幾,例如“Mon”
%H 小時(24小時時鐘),“00”至“23”
%I 小時(12小時時鐘),“01”至“12”
%M 分,“00”至“59”
%S 秒,“00”至“59”
%p 'AM'或'PM'
%% ‘%’ 字元
向strftime()傳入一個定製的格式化字串,其中包含格式化指定(以及任何需要的斜線、冒號等),
strftime()將返回一個格式化的字串,表示datetime物件的資訊
將字串轉換成datetime物件:
如果有一個字串的日期資訊,如'2015/10/21 16:29:00'或 'October 21,2015',需要將它轉換為datetime
物件,就用datetime.datetime.strptime()函式,strptime()與strftime()相反。
定製的格式字串使用相同的指令,像strftime()一樣。必須將格式字串傳入strptime(),這樣它就知道如何解析和
理解日期字串(strptime()函式名中p表示解析,parse)
datetime.datetime.strptime(引數1,引數2)
引數1:'2015/10/21 16:29:00' 日期字串
引數2:'%Y/%m/%d %H:%M:%S' 定製格式化字串
帶有日期資訊的字串必須準確匹配定製的格式字串,否則Python將丟擲ValueError異常。
datetime.datetime.strptime(time_string, format)函式:返回一個datetime物件。
Python中的時間函式:
在Python中,日期和時間可能涉及好幾種不同的資料型別和函式。
以下表示時間的3種不同型別的值:
1.Unix 紀元時間戳(time模組中使用)是一個浮點值或整型值,表示自1970年1月1日午夜0點(UTC)以來的秒數。
2.datetime物件(datetime模組)包含一些整型值,儲存在year,month,day,hour,minute,second等屬性中。
3.timedelta物件(屬於datetime模組)表示一段時間,而不是一個特定的時刻。