1. 程式人生 > >python2.x time模組和datetime模組常用函式

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模組)表示一段時間,而不是一個特定的時刻。