1. 程式人生 > 實用技巧 >time和datetime的常用方法

time和datetime的常用方法

1.time模組

  time模組以下時間表示方法。

  • 第1種是:時間戳的方式。是基於1970年1月1日0時0分0秒的偏移。浮點數。
  • 第2種是:struct_time()型別的表示方法。gmtime()和localtime()可以將時間戳顯示為struct_time()型別。
  • 第3種是:格式化時間。其中strftime()函式可以把struct_time()時間格式化顯示。

1.1time模組的三類函式

1、時間獲取:time()ctime()gmtime()

  • time.time() 獲取當前時間,浮點數
import time

print(time.time())  # 1607849520.680959
  • time.ctime()獲取當前時間並以易讀方式表示,返回字串
import time

print(time.ctime())  # Sun Dec 13 16:52:34 2020
  • time.gmtime()表示為計算機可處理的格式
import time

print(time.gmtime())  # time.struct_time(tm_year=2020, tm_mon=12, tm_mday=13, tm_hour=8, tm_min=53, tm_sec=20, tm_wday=6, tm_yday=348, tm_isdst=0)

2、時間格式化:strftime() strptime()

  • time.strftime(format[,t]): 根據引數轉換一個sturc_time或元組為字串。
import time
print(time.strftime("%Y-%m-%d", time.localtime()))  # 2020-12-13
  • time.strptime(string[, format]): 與strftime相反,返回一個struct_time。
import time
print(time.strptime("2020-12-13 16:56:22", "%Y-%m-%d %X"))  # time.struct_time(tm_year=2020, tm_mon=12
, tm_mday=13, tm_hour=16, tm_min=56, tm_sec=22, tm_wday=6, tm_yday=348, tm_isdst=-1)

3、程式計時:sleep()perf_counter()

  • time.perf_counter() 返回一個cpu級別的精準時間計數值,單位為秒 計數值不缺定,連續呼叫差值有意義
  • time.sleep(s) s是休眠的時間 單位可以是秒可以是浮點數
import time
time.sleep(2)
print("暫停:", time.perf_counter())  # 暫停: 2.0616361

2.datetime模組

  datetime是python當中比較常用的時間模組,主要是輸出格式化和操作提供高效的屬性提取功能。

datetime.date 表示日期,常用的屬性有:year, month和day
datetime.time 表示時間,常用屬性有:hour, minute, second, microsecond
datetime.datetime 表示日期時間
datetime.timedelta 表示兩個date、time、datetime例項之間的時間間隔,解析度(最小單位)可達到微秒
datetime.tzinfo 時區相關資訊物件的抽象基類。它們由datetime和time類使用,以提供自定義時間的而調整。
datetime.timezone 實現tzinfo抽象基類的類,表示與UTC的固定偏移量

1、datetime.datetime

  • datetime.datetime.now():返回系統當前時間(2020-07-1618:39:55.921602)
  • datetime.datetime.now().date():返回當前時間的日期(2020-07-16)
  • datetime.datetime.now().time():返回當前時間的時分秒(18:40:24.946237)
  • datetime.datetime.ctime():將datetime.datetime型別轉化成str型別
import datetime
a = datetime.datetime.now()
print(a)  # 2020-12-13 17:04:35.186835
timeapp = datetime.datetime.ctime(a)
print(type(timeapp))  # <class 'str'>
print(timeapp)  # Sun Dec 13 17:03:36 2020

時間格式轉化成字串

import datetime
print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))  # 2020-12-13 17:07:04

字串轉化成時間格式

a = datetime.datetime.strptime('2020-12-13 17:08:36', '%Y-%m-%d %H:%M:%S')
print(type(a))  # <class 'datetime.datetime'>
print(a)  # 2020-12-13 17:08:36

2、datetime.timedelta

  timedelta物件表示兩個不同時間之間的差值。如果使用time模組對時間進行算術執行,只能將字串格式的時間和struct_time格式的時間物件先轉換為時間戳格式,然後對該時間戳加上或減去n秒,最後再轉換回struct_time格式或字串格式,這顯然很不方便。而datetime模組提供的timedelta類可以讓我們很方面的對datetime.date, datetime.time和datetime.datetime物件做算術運算,且兩個時間之間的差值單位也更加容易控制。

  datetime.timedelta()新增引數,如計算300天是幾號。

import datetime
timeapp = datetime.datetime.now().date()
print(type(timeapp))  # <class 'datetime.date'>
print(timeapp)  # 2020-12-13
delta = datetime.timedelta(days=300)
print(timeapp - delta)  # 2020-02-17

  datetime.timedelta()也可以多個引數,如計算300天12小時前的時間。

import datetime
timeapp = datetime.datetime.now()
print(type(timeapp))  # <class 'datetime.datetime'>
print(timeapp)  # 2020-12-13 17:14:35.253393
delta = datetime.timedelta(days=300, hours=12)
print(timeapp - delta)  # 2020-02-17 05:14:35.253393

  計算天數和秒數。

import datetime

print(datetime.timedelta(days=1, hours=32).days)  # 2
print(datetime.timedelta(days=1, hours=32).total_seconds())  # 201600.0