Python零碎知識(10):對日期時間的處理

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.