1. 程式人生 > 實用技巧 >python的時間使用和時間計算

python的時間使用和時間計算

python存在兩個時間類time/dateTime

區別:

  time:在python文件中,time是歸類在常規作業系統服務中,它提供的功能更加接近於作業系統層面。其所能表述的日期範圍被限定在1970-2038之間,如果需要表述範圍之外的日期,可能需要考慮使用datetime模組更好。

  datetime:比time高階了不少,可以理解為datetime基於time進行了封裝,提供了更多實用的函

用法:

  簡介時間元組(struct_time):

    tm_year:年1-12

    tm_mon:月1-12

    tm_mday:日1-31

    tm_hour:時0-23

    tm_min:分0-59

    tm_sec:秒0-59

    tm_wday:星期0-6(0表示週日)

    tm_day:一年中的第幾天1-366

    tm_isdst:是否是夏令,預設為-1

  time:

    time.sleep(sec):推遲指定時間sec後繼續執行

    time.localtime([sec]):將一個時間戳轉化成一個當時時區的struct_time,如果sec引數未輸入,則以當前時間為轉化標準

    time.strftime(format[,t]):將指定的struct_time(預設為當前時間),根據指定的格式化字串輸出

    time.time():返回當前時間的時間戳(以秒錶示的浮點數)

    time.mktime(t):將一個struct_time轉換為時間戳

    time.gmtime([sec]):將一個時間戳轉化為UTC時區(0時區)的struct_time

    time.clock():不同系統含義不同。UNIX——返回程序時間,WINS第一次呼叫返回程序執行的實際時間,第二次呼叫是自第一次呼叫以後到現在的執行時間

    time.asctime([t])把一個時間的元組或者struct_time表示為“Sun Jun 20 23:21:05 1993”,如果無引數,則會把time.localtime()作為引數傳入

    time.ctime([sec]):把一個時間戳轉化為time.asctime()的形式,如果無引數或者為None時,則會把time.time()作為引數傳入。它的作用相當於time.asctime(time.localtime(sec))

    time.strftime(format[,t]):把一個代表時間的元組或者struct_time轉化為格式化的時間字串。如果t為指定,將傳入time.localtime()。如果元組中任何一個元素越界,ValueError的錯誤將會被丟擲

  datetime:

    提供類方法如下:

      timedelta:主要用於計算時間跨度

      tzinfo:時區相關 

      time:只關注時間

      date:只關注日期

      datetime:同時有時間和日期

    實際使用中用的比較多的是:datetime.datetime 和 datetime.timedelta

      datetime.year

      datetime.month

      datetime.day

      datetime.hour

      datetime.minute

      datetime.second

      datetime.microsecond

      datetime.tzinfo():時區

      datetime.date():返回date物件

      datetime.time():返回time物件

      datetime.replace(name=value)

      datetime.timetuple():返回time.struct_time 物件

      datetime.strftime(format):按照format進行格式化輸出

計算時間精確到時分秒:

from datetime import datetime
oldtime= datetime(2020,10,26, 11,00,38)
newtime= datetime(2020,10,26, 18,00,38)
print ((newtime-oldtime).seconds) #
print (round((newtime-oldtime).seconds/60)) #
print (round((newtime-oldtime).seconds/3600)) #
print ((newtime-oldtime).days) #