詳解Python中datetime庫的使用
1. datetime 庫概述
以不同格式顯示日期和時(shí)間是程序中最常用到的功能。Python 提供了一個(gè)處理時(shí)間的標(biāo)準(zhǔn)函數(shù)庫 datetime,它提供了一系列由簡單到復(fù)雜的時(shí)間處理方法。
datetime 庫可以從系統(tǒng)中獲得時(shí)間,并以用戶選擇的格式輸出。
datetime 庫以格林威治時(shí)間為基礎(chǔ),每天由 3600X24 秒精準(zhǔn)定義。該庫包括兩個(gè)常量:datetime.MINYEAR 與 datetime.MAXYEAR,分別表示 datetime 所能表示的最小、最大年份,值分別為 1 與 9999。
datetime 庫以類的方式提供多種日期和時(shí)間表達(dá)方式。
(1) datetime.date:日期表示類,可以表示年、月、日等。
(2) datetime.time:時(shí)間表示類,可以表示小時(shí)、分鐘、秒、毫秒等。
(3) datetime.dateime:日期和時(shí)間表示的類,功能覆蓋 date 和 time 類。
(4) datetime.timedelta: 與時(shí)間間隔有關(guān)的類。
(5) datetime.tzinfo:與時(shí)區(qū)有關(guān)的信息表示類。
由于 datetime.daetime 類表達(dá)形式最為豐富,這里主要介紹這個(gè)類的使用。使用 datetime 類需要用 import 保留字,引用 datetime類的方式如下:
from datetime import datetime
2. 拓展: 1970年1月1日
當(dāng)代計(jì)算機(jī)系統(tǒng)都有一個(gè)計(jì)時(shí)功能,能夠輸出從格林威治標(biāo)準(zhǔn)時(shí)間 1970 年 1 月 1 日 00:00:00 開始到當(dāng)下的時(shí)間計(jì)數(shù),精確到秒,這是 UNIX 操作系統(tǒng)早期的設(shè)計(jì)習(xí)慣,后沿用到所有計(jì)算機(jī)系統(tǒng)中。
現(xiàn)在的計(jì)算機(jī)硬件和系統(tǒng)都是 64 位,如果用 64 位存儲(chǔ)這個(gè)時(shí)間計(jì)數(shù)則最大可以表示距離 1970 年 1 月 1 日開始的 264 秒,1 年 365 天的總秒數(shù)約為 1.9x224 ,因此,64 位計(jì)算機(jī)系統(tǒng)可以將時(shí)間表示到約公元 239 年,相信我們的 N 代子孫,哪怕到地球毀滅那天都不用擔(dān)心時(shí)間不準(zhǔn)確了。
——為什么選擇從 1970 年 1 月 1 日開始? ——無論選擇從哪天開始, 都會(huì)有同樣的問題, 不是嗎?
3. datetime 庫解析
datetime 類 ( datetime.datetime 類,以下簡稱為 datetime 類) 的使用方式是首先創(chuàng)建一個(gè) datetime 對(duì)象,然后通過對(duì)象的方法和屬性顯示時(shí)間。創(chuàng)建 datetime 對(duì)象有3種方法:datetime.now()、 datetime.utcnow() 和 datetime.datetime()。
1.使用 datetime.now() 獲得當(dāng)前日期和時(shí)間對(duì)象,使用方法如下:
datetime.now()
作用:返回一個(gè) datetime 類型,表示當(dāng)前的日期和時(shí)間,精確到微秒。 參數(shù):無 調(diào)用該函數(shù),執(zhí)行結(jié)果如下:
from datetime import datetime today = datetime.now() print(today)
2022-05-01 20:32:41.772021
2.使用 datetime utcnow() 獲得當(dāng)前日期和時(shí)間對(duì)應(yīng)的 UTC (世界標(biāo)準(zhǔn)時(shí)間) 時(shí)間對(duì)象,使用方法如下:
datetime.utcnow ()
作用:返回一個(gè) datetime 類型,表示當(dāng)前日期和時(shí)間的 UTC 表示,精確到微秒。 參數(shù):無 調(diào)用該函數(shù),執(zhí)行結(jié)果如下:
from datetime import datetime today = datetime.utcnow() print(today)
2022-05-01 12:35:40.849860
3.datetime.now() 和 datetime utcnow() 都返回一個(gè) datetime 類型的對(duì)象,也可以直接使用 datetime() 構(gòu)造一個(gè)日期和時(shí)間對(duì)象, 使用方法如下:
datetime (year, month, day, hour=0, minute=0,second=0, microsecond=0)
作用:返回一個(gè) datetime 類型,表示指定的日期和時(shí)間,可以精確到微秒。
參數(shù)如下:
year:指定的年份,MINYEAR <= year <= MAXYEAR
month:指定的月份,1 <= month <= 12
day:指定的日期,1 <= day <=月份所對(duì)應(yīng)的日期上限
hour:指定的小時(shí),0 <= hour < 24
minute:指定的分鐘數(shù),0 <= minute < 60
second:指定的秒數(shù),0 <= second < 60
microsecond:指定的微秒數(shù),0 <= microsecond < 1000000
其中,hour、minute、second、microsecond 參數(shù)可以全部或部分省略。
調(diào)用 datetime() 函數(shù)直接創(chuàng)建一個(gè) datetime 對(duì)象,表示 2022 年 5 日 1 日 20:33,32 秒 7 微妙,執(zhí)行結(jié)果如下:
from datetime import datetime someday = datetime(2022, 5, 1, 20, 43, 32, 7) print(someday)
2022-05-01 20:43:32.000007
到此,程序已經(jīng)有了一個(gè) datetime 對(duì)象,進(jìn)一步可以利用這個(gè)對(duì)象的屬性顯示時(shí)間,為了區(qū)別 datetime 庫名,采用上例中的 someday 代替生成的 datetime 對(duì)象,常用屬性如下表所示。
屬性 | 描述 |
someday.min | 固定返回 datetime 的最小時(shí)間對(duì)象,datetime(1,1,1,0,0) |
someday.max | 固定返回 datetime 的最大時(shí)間對(duì)象,datetime(9999,12,31,23,59,59,59,999999) |
someday.year | 返回 someday 包含的年份 |
someday.month | 返回 someday 包含的月份 |
someday.day | 返回 someday 包含的日期 |
someday.hour | 返回 someday 包含的小時(shí) |
someday.minute | 返回 someday 包含的分鐘 |
someday.second | 返回 someday 包含的秒鐘 |
someday.microsecond | 返回 someday 包含的微妙值 |
datetime 對(duì)象有 3 個(gè)常用的時(shí)間格式化方法,如下表所示
屬性 | 描述 |
someday.isoformat() | 采用 ISO 8601 標(biāo)準(zhǔn)顯示時(shí)間 |
someday.isoweekday() | 根據(jù)日期計(jì)算星期后返回 1~7,對(duì)應(yīng)星期一到星期日 |
someday.strftime(format) | 根據(jù)格式化字符串 format 進(jìn)行格式顯示的方法 |
isoformat() 和 isoweekday() 方法的使用如下:
from datetime import datetime today = datetime.now() print(today.isoformat()) print(today.isoweekday())
程序執(zhí)行結(jié)果如下:
2022-05-01T21:00:28.392304
7
strftime() 方法是時(shí)間格式化最有效的方法,幾乎可以以任何通用格式輸出時(shí)間。例如下面的例子,用該方法輸出特定格式時(shí)間。
from datetime import datetime today = datetime.now() print(today.strftime("%Y-%m-%d %H : %M : %S"))
程序執(zhí)行結(jié)果如下:
2022-05-01 21 : 04 : 23
下表是 strftime() 方法的格式化控制符。
格式化字符串 | 日期/時(shí)間 | 值范圍和實(shí)例 |
%Y | 年份 | 0001~9999 |
%m | 月份 | 01~12 |
%B | 月名 | January~December |
%b | 月名縮寫 | Jan~Dec |
%d | 日期 | 01~31 |
%A | 星期 | Monday~Sunday |
%a | 星期縮寫 | Mon~Sun |
%H | 小時(shí)(24 h 制) | 00~23 |
%M | 分鐘 | 00~59 |
%S | 秒 | 00~59 |
%x | 日期 | 月/日/年,例如,01/01/2022 |
%X | 時(shí)間 | 時(shí) :分:秒,例如,19 : 09 : 31 |
strftime() 格式化字符串的數(shù)字左側(cè)會(huì)自動(dòng)補(bǔ)零,上述格式也可以與 print() 的格式化函數(shù)起使用,例如:
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))
程序執(zhí)行結(jié)果如下:
2022- 05- 01
Sunday,01. May 2022 21: 21PM
今天是 2022 年 05 月 01 日
datetime 庫主要用于對(duì)時(shí)間的表示,從格式化角度掌握 strftime() 函數(shù)已經(jīng)能夠處理很多情況了。建議讀者在遇到需要處理時(shí)間的問題時(shí)采用 datetime 庫,簡化格式輸出和時(shí)間的維護(hù)。
到此這篇關(guān)于詳解Python中datetime庫的使用的文章就介紹到這了,更多相關(guān)Python datetime庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python機(jī)器學(xué)習(xí)之KNN分類算法
這篇文章主要為大家詳細(xì)介紹了python機(jī)器學(xué)習(xí)之KNN分類算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08淺析Python 實(shí)現(xiàn)一個(gè)自動(dòng)化翻譯和替換的工具
這篇文章主要介紹了Python 實(shí)現(xiàn)一個(gè)自動(dòng)化翻譯和替換的工具,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04python利用while求100內(nèi)的整數(shù)和方式
這篇文章主要介紹了 python利用while求100內(nèi)的整數(shù)和方式,下面文章要描述的內(nèi)容有1到100的和、1到100內(nèi)的偶數(shù)和、1到100內(nèi)的奇數(shù)和,具體詳細(xì)內(nèi)容,需要的朋友可以參考一下2021-11-11解決python寫入帶有中文的字符到文件錯(cuò)誤的問題
今天小編就為大家分享一篇解決python寫入帶有中文的字符到文件錯(cuò)誤的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01Python3將數(shù)據(jù)保存為txt文件的方法
這篇文章主要介紹了Python3將數(shù)據(jù)保存為txt文件的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09Python實(shí)現(xiàn)的手機(jī)號(hào)歸屬地相關(guān)信息查詢功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的手機(jī)號(hào)歸屬地相關(guān)信息查詢功能,涉及Python文件讀取及基于第三方接口調(diào)用查詢信息的相關(guān)操作技巧,需要的朋友可以參考下2017-06-06