以不同格式顯示日期和時間是程式中最常使用的功能。 Python 提供了一個處理時間的標準函數庫 datetime,它提供了一系列由簡單到複雜的時間處理方法。
datetime 函式庫可以從系統中取得時間,並以使用者選擇的格式輸出。
datetime 函式庫以格林威治時間為基礎,每天由 3600X24 秒精確定義。此函式庫包含兩個常數:datetime.MINYEAR 與datetime.MAXYEAR,分別表示datetime 所能表示的最小、最大年份,數值分別為1 與9999。
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
當代電腦系統都有一個計時功能,能夠輸出從格林威治標準時間1970 年1 月1 日00:00:00 開始到當下的時間計數,精確到秒,這是UNIX 作業系統早期的設計習慣,後沿用到所有電腦系統中。
現在的電腦硬體和系統都是64 位,如果用64 位元儲存這個時間計數則最大可以表示距離1970 年1 月1 日開始的264 秒,1 年365 天的總秒數約為1.9x224 ,因此,64 位元電腦系統可以將時間表示到約公元239 年,相信我們的N 代子孫,哪怕到地球毀滅那天都不用擔心時間不準確了。
——為什麼選擇從1970 年1 月1 日開始? ——無論選擇從哪天開始,都會有同樣的問題,不是嗎?
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
其中,hour、minute、second、microsecond 参数可以全部或部分省略。
调用 datetime() 函数直接创建一个 datetime 对象,表示 2022 年 5 日 1 日 20:33,32 秒 7 微妙,执行结果如下:
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中文網其他相關文章!