Python提供了time/datetime/calendar等模組來處理日期時間。
一、time模組常用的函數
1、 time.time
1970年1月1日以來的秒數,這是一個浮點數
2、 time.sleep
可以通過調用time.sleep來掛起當前的進程。time.sleep接收一個浮點型參數,表示進程掛起的時間。
3、time.clock
在windows作業系統上,time.clock() 返回第一次調用該方法到現在的秒數,其精確度高於1微秒。可以使用該函數來記錄程式執行的時間。下面是一個簡單的例子:
1 >>> print time.clock()2 1.26999365003e-0063 >>> time.sleep(2)4 >>> print time.clock()5 21.42214196436 >>> time.sleep(3)7 >>> print time.clock()8 44.0470900595
4、 time.gmtime
該 函數原型為:time.gmtime([sec]),可選的參數sec表示從1970-1-1以來的秒數。其預設值為 time.time(),函數返回time.struct_time類型的對象。(struct_time是在time模組中定義的表示時間的對象),下 面是一個簡單的例子:
1 >>> print time.gmtime() #擷取目前時間的struct_time對象 2 (2013, 4, 8, 4, 28, 30, 0, 98, 0)3 >>> print time.gmtime(time.time())4 (2013, 4, 8, 4, 28, 50, 0, 98, 0)5 >>> print time.gmtime(time.time()-24*60*60) #擷取昨天這個時間的struct_time對象6 (2013, 4, 7, 4, 29, 10, 6, 97, 0)7 >>>
5、 time.localtime
與time.gmtime非常類似,也返回一個struct_time對象,可以把它看作是gmtime()的語言版本。
6、 time.mktime
time.mktime執行與gmtime(), localtime()相反的操作,它接收struct_time對象作為參數,返回用秒數來表示時間的浮點數。例如:
1 >>> print time.mktime(time.localtime())2 1365395531.0
7、 time.strftime
time.strftime將日期轉換為字串表示,它的函數原型為:time.strftime(format[, t])。參數format是格式字串(格式字串的知識可以參考:time.strftime ),可選的參數t是一個struct_time對象。下面的例子將struct_time對象轉換為字串表示:
1 >>> print time.strftime('%Y-%m-%d %H:%M:%S',time.gmtime())2 2013-04-08 04:35:34
time.strftime參數:strftime(format[, tuple]) -> string將指定的struct_time(預設為目前時間),根據指定的格式化字串輸出python中時間日期格式化符號:
%y 兩位元的年份表示(00-99)%Y 四位元的年份表示(000-9999)%m 月份(01-12)%d 月內中的一天(0-31)%H 24小時制小時數(0-23)%I 12小時制小時數(01-12)%M 分鐘數(00=59)%S 秒(00-59)%a 本地簡化星期名稱%A 本地完整星期名稱%b 本地簡化的月份名稱%B 本地完整的月份名稱%c 本地相應的日期表示和時間表示%j 年內的一天(001-366)%p 本地A.M.或P.M.的等價符%U 一年中的星期數(00-53)星期天為星期的開始%w 星期(0-6),星期天為星期的開始%W 一年中的星期數(00-53)星期一為星期的開始%x 本地相應的日期表示%X 本地相應的時間表示%Z 當前時區的名稱%% %號本身
8、 time.strptime
按指定格式解析一個表示時間的字串,返回struct_time對象。該函數原型為:time.strptime(string, format),兩個參數都是字串,下面是一個簡單的例子,示範將一個字串解析為一個struct_time對象:
1 >>> print time.strptime('2013-04-09 12:30:25','%Y-%m-%d %H:%M:%S')2 (2013, 4, 9, 12, 30, 25, 1, 99, -1)
更多內容參考Python手冊
二、datetime模組
time模組它提供 的介面與C標準庫time.h基本一致。相比於time模組,datetime模組的介面則更直觀、更容易調用。
1、兩個常量:
datetime.MINYEAR和datetime.MAXYEAR,分別表示datetime所能表示的最 小、最大年份。其中,MINYEAR = 1,MAXYEAR = 9999。
2、幾個重要的類:
2.1、datetime.date:表示日期的類。常用的屬性有year, month, day;
year的返回在兩個常量之間;
month的範圍是[1, 12]。(月份是從1開始的,不是從0開始的);
day依據month來決定。
date類提供了常用的類方法和類屬性:
date.max、date.min:date對象所能表示的最大、最小日期;
date.today():返回一個表示當前本地日期的date對象
1 >>> from datetime import *2 >>> import time3 >>> print date.today()4 2013-04-085 >>> print date.max6 9999-12-317 >>> print date.min8 0001-01-01
date提供的執行個體方法和屬性
- date.year、date.month、date.day:年、月、日;
- date.replace(year, month, day):產生一個新的日期對象,用參數指定的年,月,日代替原有對象中的屬性。(原有對象仍保持不變)
- date.timetuple():返回日期對應的time.struct_time對象;
- date.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此類推;
- data.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此類推;
- date.isocalendar():返回格式如(year,month,day)的元組;
- date.isoformat():返回格式如'YYYY-MM-DD’的字串;
- date.strftime(fmt):自訂格式化字串。在下面詳細講解。
1 >>> now=date(2013,04,8) 2 >>> tomorrow=now.replace(day=9) 3 >>> print 'now:',now 4 now: 2013-04-08 5 >>> print 'tomorrow:',tomorrow 6 tomorrow: 2013-04-09 7 >>> print 'timetuple():',now.timetuple() 8 timetuple(): (2013, 4, 8, 0, 0, 0, 0, 98, -1) 9 >>> print 'weekday():',now.weekday()10 weekday(): 011 >>> print 'isoweekday():',now.isoweekday()12 isoweekday(): 113 >>> print 'isocalendar():',now.isocalendar()14 isocalendar(): (2013, 15, 1)15 >>> print 'isoformat():',now.isoformat()16 isoformat(): 2013-04-08
date還對某些操作進行了重載,它允許我們對日期進行如下一些操作:
- date2 = date1 + timedelta # 日期加上一個間隔,返回一個新的日期對象(timedelta將在下面介紹,表示時間間隔)
- date2 = date1 - timedelta # 日期隔去間隔,返回一個新的日期對象
- timedelta = date1 - date2 # 兩個日期相減,返回一個時間間隔對象
- date1 < date2 # 兩個日期進行比較
1 now = date.today() 2 tomorrow = now.replace(day = 7 ) 3 delta = tomorrow - now 4 print 'now:' , now, ' tomorrow:' , tomorrow 5 print 'timedelta:' , delta 6 print now + delta 7 print tomorrow > now 8 9 # # ---- 結果 ---- 10 # now: 2010-04-06 tomorrow: 2010-04-07 11 # timedelta: 1 day, 0:00:00 12 # 2010-04-07 13 # True
參考:http://blog.csdn.net/JGood/article/details/5457284