Python 時間操作datetime詳情

復習回顧:

Python 在對時間操作內置庫提供瞭time模塊和datetime模塊。

  • time模塊對結構化時間與時間戳和字符串時間進行互相轉換相關方法學習
  • datetime 模塊提供處理時間和日期的多種類,簡單方便

python 還提供通用日歷相關方法的calendar模塊,時區信息zoneinfo模塊,以及第三方庫arrowdateutil模塊對時間處理

1. datetime 模塊概述

datetime 模塊不僅支持時間日期數學運算,還提供高效輸出格式化和操作的屬性相關方法

datetime 模塊根據包含時區信息將日期和時間分為兩種感知型對象和簡單型對象

  • 感知型時間對象:充分使用應用性算,以及當地實際情況來精確定位時間點,通常用來表示沒有解釋空間的固定時間點
  • 簡單型時間對象:不會包含當地的信息,一切取決於具體程序所計算出的時間點,忽略現實因素,通常可以代表UTC世界標準時間

datetime 提供許多類,能進一步方便與我們取出感知型時間對象的信息。

  • date 類型的對象都是簡單型的
  • timedatetime類型的對象可以是感知型或者簡單型
  • timedelta 對象既不是感知型對象也不是簡單型對象

2. datetime 組成部分

datetime 模塊對比time不同的是,它主要提供操作日期和時間的類。

通過查看 datetime 模塊文件主要提供包括處理時間日期的還有時區相關的類共6類

類名稱 描述
datetime.date 用於表示日期,常用的屬性有:year, month和day
datetime.time 用於表示時間,常用屬性有:hour, minute, second, microsecond
datetime.datetime 用於表示日期時間
datetime.timedelta 用於表示兩個date、time、datetime實例之間的時間間隔,最小單位可達到微秒
datetime.tzinfo 時區相關信息對象的抽象基類。它們由datetime和time類使用,以提供自定義時間的而調整。
datetime.timezone Python 3.2中新增的功能,實現tzinfo抽象基類的類,表示與UTC的固定偏移量

datetime 模塊相關類關系圖:

datetime 模塊中類的對象都是不可變類型

datetime這兩個類是我們日常使用最多的

3. datetime 常量

在datetime.pyi文件中,我們可知道detetime模塊定義瞭兩個常量dat

常量名稱 描述
datetime.MINYEAR datetime.date或datetime.datetime對象所允許的年份的最小值,值為1
datetime.MAXYEAR datetime.date或datetime.datetime對象所允許的年份的最大值,隻為9999

4. datetime 常用方法

datetime 模塊對比time模塊提供更多的操作時間日期的操作,以下我們列出常用的方法

方法 作用
datetime.datetime.timestamp() 將datetime對象轉換輸出成時間戳的形式
datetime.datetime.now() 格式化輸出當前系統時間
datetime.datetime.timedelta([hours,days]) 設置某個屬性的偏移量
datetime.datetime.strptime(date_str,format) 將時間字符串轉換為datetime對象
datetime.date.fromtimestamp(timestamp) 將時間戳格式化輸出為日期
datetime.date.today() 返回當地本地日期
datetime.time.strftime(fromat) 返回當地時間格式化輸出
datetime.time.dst() 返回當地所在的時區,tzinfo為none,則返回none
datetime.tzinfo.utcoffset(dt) 設置時區差,以東為正值,返回timedelta對象
datetime.tzinfo.dst(dt) 將夏令時調整返回一個timedelta對象

5、實操

我們對datetime模塊常用方法學習,我們來實現輸入日期判斷是昨天或者今天的日期即為Ture,否則為false

def check_current_date(sw_date):

    cur_date_list =  time.strftime("%Y/%m/%d", time.localtime()) .split('/')

    today = datetime.datetime.now()

    offset = datetime.timedelta(days=-1)

    yes_data = today+offset

    yes_data_list = yes_data.strftime("%Y/%m/%d").split('/')

    data_list = cur_date_list + yes_data_list

    print("data_list",data_list)

    seps = ['/', '-', '_']

    for sep in seps:

        date_parts= sw_date.split(sep)

        print("cur_date_list = {}, arg sw_date = {}".format(data_list, sw_date))

        if len(date_parts) == 3:

            for data in date_parts:

                if data not in data_list:

                    return False

            return True

    return False

我們來進行測試一下結果:

print("當前日期:",datetime.datetime.now())

print("測試前一天:",check_current_date("2021-10-29"))

print("測試當前日期:",check_current_date("2021/10/30"))

6、總結

本期,我們對datetime模塊進行基本的認識,知道datetime模塊包含6個類,且對常用方法進行學習和實操。

到此這篇關於 Python 時間操作datetime的文章就介紹到這瞭,更多相關 Python 時間操作datetime內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: