首頁  >  文章  >  後端開發  >  Python datetime函式庫如何使用

Python datetime函式庫如何使用

WBOY
WBOY轉載
2023-05-27 12:11:161633瀏覽

1. datetime 庫概述

以不同格式顯示日期和時間是程式中最常使用的功能。 Python 提供了一個處理時間的標準函數庫 datetime,它提供了一系列由簡單到複雜的時間處理方法。

datetime 函式庫可以從系統中取得時間,並以使用者選擇的格式輸出。

datetime 函式庫以格林威治時間為基礎,每天由 3600X24 秒精確定義。此函式庫包含兩個常數:datetime.MINYEARdatetime.MAXYEAR,分別表示datetime 所能表示的最小、最大年份,數值分別為19999

datetime 函式庫以類別的方式提供多種日期和時間表達方式。

(1) datetime.date:日期表示類,可以表示年、月、日等。
(2) datetime.time:時間表示類,可以表示小時、分鐘、秒、毫秒等。
(3) datetime.dateime:日期和時間表示的類,功能覆寫 date 和 time 類別。
(4) datetime.timedelta: 與時間間隔有關的類別。
(5) datetime.tzinfo:與時區相關的資訊表示類別。

由於 datetime.daetime 類別表達形式最為豐富,這裡主要介紹這個類別的使用。使用datetime 類別需要用import 保留字,引用datetime類別的方式如下:

from datetime import datetime

2. 拓展: 1970年1月1日

當代電腦系統都有一個計時功能,能夠輸出從格林威治標準時間19701100:00:00 開始到當下的時間計數,精確到秒,這是UNIX 作業系統早期的設計習慣,後沿用到所有電腦系統中。

現在的電腦硬體和系統都是64 位,如果用64 位元儲存這個時間計數則最大可以表示距離197011 日開始的264 秒,1365 天的總秒數約為1.9x224 ,因此,64 位元電腦系統可以將時間表示到約公元239 年,相信我們的N 代子孫,哪怕到地球毀滅那天都不用擔心時間不準確了。

——為什麼選擇從197011 日開始? ——無論選擇從哪天開始,都會有同樣的問題,不是嗎?

3. datetime 函式庫解析

datetime 類別( datetime.datetime 類,以下簡稱為datetime 類別) 的使用方式是先建立一個datetime 對象,然後透過對象的方法和屬性顯示時間。建立 datetime 物件有3種方法:datetime.now()datetime.utcnow()datetime.datetime()

1.使用datetime.now() 取得當前日期和時間對象,使用方法如下:

datetime.now()

作用:傳回一個datetime 類型,表示目前的日期和時間,精確到微秒。參數:無呼叫函數,執行結果如下:

from datetime import datetime
today = datetime.now()
print(today)

#2022-05-01 20:32:41.772021

2.使用datetime utcnow() 取得當前日期和時間對應的UTC (世界標準時間) 時間對象,使用方法如下:

datetime.utcnow ()

作用:傳回一個datetime 類型,表示當前日期和時間的UTC 表示,精確到微秒。參數:無呼叫函數,執行結果如下:

from datetime import datetime
today = datetime.utcnow()
print(today)

#2022-05-01 12:35:40.849860

#3.datetime.now() datetime utcnow() 都傳回一個datetime 類型的對象,也可以直接使用datetime() 建構一個日期和時間對象, 使用方法如下:

datetime (year, month, day, hour=0, minute=0,second=0, microsecond=0)

作用:傳回一個datetime 類型,表示指定的日期和時間,可以精確到微秒。

參數如下:

year:指定的年份,MINYEAR <= year <= MAXYEAR

month:指定的月份,1 <= month <= 12

day:指定的日期,1 <= day <=月份所對應的日期上限

hour:指定的小時,0 <= hour < 24

minute :指定的分鐘數,0 <= minute < 60

second:指定的秒数,0 <= second < 60

microsecond:指定的微秒数,0 <= microsecond < 1000000

其中,hourminutesecondmicrosecond 参数可以全部或部分省略。

调用 datetime() 函数直接创建一个 datetime 对象,表示 20225120:33327 微妙,执行结果如下:

from datetime import datetime
someday = datetime(2022, 5, 1, 20, 43, 32, 7)
print(someday)

2022-05-01 20:43:32.000007

到此,程序已经有了一个 datetime 对象,进一步可以利用这个对象的属性显示时间,为了区别 datetime 库名,采用上例中的 someday 代替生成的 datetime 对象,常用属性如下表所示。

属性 描述
someday.min 固定返回 datetime 的最小时间对象,datetime(1,1,1,0,0)
someday.max 固定返回 datetime 的最大时间对象,datetime(9999,12,31,23,59,59,59,999999)
someday.year 返回 someday 包含的年份
someday.month 返回 someday 包含的月份
someday.day 返回 someday 包含的日期
someday.hour 返回 someday 包含的小时
someday.minute 返回 someday 包含的分钟
someday.second 返回 someday 包含的秒钟
someday.microsecond 返回 someday 包含的微妙值

datetime 对象有 3 个常用的时间格式化方法,如下表所示

属性 描述
someday.isoformat() 采用 ISO 8601 标准显示时间
someday.isoweekday() 根据日期计算星期后返回 1~7,对应星期一到星期日
someday.strftime(format) 根据格式化字符串 format 进行格式显示的方法

isoformat()isoweekday() 方法的使用如下:

from datetime import datetime
today = datetime.now()
print(today.isoformat())
print(today.isoweekday())

程序执行结果如下:

2022-05-01T21:00:28.392304
7

strftime() 方法是时间格式化最有效的方法,几乎可以以任何通用格式输出时间。例如下面的例子,用该方法输出特定格式时间。

from datetime import datetime
today = datetime.now()
print(today.strftime("%Y-%m-%d %H : %M : %S"))

程序执行结果如下:

2022-05-01 21 : 04 : 23

下表是 strftime() 方法的格式化控制符。

格式化字符串 日期/时间 值范围和实例
%Y 年份 0001~9999
%m 月份 01~12
%B 月名 January~December
%b 月名缩写 Jan~Dec
%d 日期 01~31
%A 星期 Monday~Sunday
%a 星期缩写 Mon~Sun
%H 小时(24 h 制) 00~23
%M 分钟 00~59
%S 00~59
%x 日期 月/日/年,例如,01/01/2022
%X 时间 时 :分:秒,例如,19 : 09 : 31

strftime() 格式化字符串的数字左侧会自动补零,上述格式也可以与 print() 的格式化函数起使用,例如:

from datetime import datetime

now = datetime.now()

print(now.strftime("%Y- %m- %d"))

print(now.strftime("%A,%d. %B %Y %H: %M%p"))

print("今天是 {0:%Y} 年 {0:%m} 月 {0:%d} 日".format(now))

程序执行结果如下:

2022- 05- 01
Sunday,01. May 2022 21: 21PM
今天是 2022 年 05 月 01 日

datetime 库主要用于对时间的表示,从格式化角度掌握 strftime() 函数已经能够处理很多情况了。建议读者在遇到需要处理时间的问题时采用 datetime 库,简化格式输出和时间的维护。

以上是Python datetime函式庫如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除