一文帶你吃透Python中的日期時(shí)間模塊
Python 提供了 日期和時(shí)間模塊用來(lái)處理日期和時(shí)間,還可以用于格式化日期和時(shí)間等常見(jiàn)功能。
- 時(shí)間間隔是以秒為單位的浮點(diǎn)小數(shù)。
- 每個(gè)時(shí)間戳都以自從 1970 年 1 月 1 日午夜(歷元)經(jīng)過(guò)了多長(zhǎng)時(shí)間來(lái)表示。
一、time模塊使用
Time 模塊包含了大量?jī)?nèi)置函數(shù),既有時(shí)間處理的,也有轉(zhuǎn)換時(shí)間格式的。
1、獲取當(dāng)前時(shí)間
import time # 獲取時(shí)間戳 返回的是浮點(diǎn)型 # 作用 用來(lái)計(jì)算時(shí)間差 print(time.time()) # 1676775733.1080997 # 獲取當(dāng)?shù)貢r(shí)間 返回的是結(jié)構(gòu)化時(shí)間 print(time.localtime()) # 獲取UTC時(shí)間 返回的還是結(jié)構(gòu)化時(shí)間 比中國(guó)時(shí)間少8小時(shí) print(time.gmtime())

1.1 時(shí)間元組
時(shí)間元組:Python函數(shù)用一個(gè)元組裝起來(lái)的9組數(shù)字處理時(shí)間。

上面也就是 struct_time 元組。這種結(jié)構(gòu)具有如下屬性:

2、格式化時(shí)間
2.1 獲取格式化的時(shí)間
import time
# 獲取本地時(shí)間
localtime = time.asctime(time.localtime(time.time()))
#localtime = time.asctime(time.localtime())
print("本地時(shí)間為 :", localtime)
## 本地時(shí)間為 : Mon Feb 20 20:49:10 2023
2.2 格式化時(shí)間轉(zhuǎn)換
使用 time 模塊的 strftime 方法來(lái)格式化日期,通過(guò) strptime方法來(lái)格式化字符串。
# 時(shí)間轉(zhuǎn)換為格式字符串
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))
# 格式字符串轉(zhuǎn)換為時(shí)間
str = "2023-02-14 05:20:00"
print(time.strptime(str, "%Y-%m-%d %H:%M:%S"))
# 格式字符串轉(zhuǎn)換為時(shí)間戳
print(time.mktime(time.strptime(str, "%Y-%m-%d %H:%M:%S")))

Python中時(shí)間日期格式化符號(hào):
- %y 兩位數(shù)的年份表示(00-99)
- %Y 四位數(shù)的年份表示(000-9999)
- %m 月份(01-12)
- %d 月內(nèi)中的一天(0-31)
- %H 24小時(shí)制小時(shí)數(shù)(0-23)
- %I 12小時(shí)制小時(shí)數(shù)(01-12)
- %M 分鐘數(shù)(00=59)
- %S 秒(00-59)
- %a 本地簡(jiǎn)化星期名稱(chēng)
- %A 本地完整星期名稱(chēng)
- %b 本地簡(jiǎn)化的月份名稱(chēng)
- %B 本地完整的月份名稱(chēng)
- %c 本地相應(yīng)的日期表示和時(shí)間表示
- %j 年內(nèi)的一天(001-366)
- %p 本地A.M.或P.M.的等價(jià)符
- %U 一年中的星期數(shù)(00-53)星期天為星期的開(kāi)始
- %w 星期(0-6),星期天為星期的開(kāi)始
- %W 一年中的星期數(shù)(00-53)星期一為星期的開(kāi)始
- %x 本地相應(yīng)的日期表示
- %X 本地相應(yīng)的時(shí)間表示
- %Z 當(dāng)前時(shí)區(qū)的名稱(chēng)
- %% %號(hào)本身
二、datetime模塊
datetime模塊提供了對(duì)時(shí)間和日期進(jìn)行操作的功能。
datatime模塊通過(guò)date類(lèi)、time類(lèi)、datetime類(lèi)、timedelta類(lèi)、timezone類(lèi)等來(lái)獲取或者操作時(shí)間、日期。
與time模塊相比,datetime模塊提供的接口更直觀(guān)、易用,功能也更加強(qiáng)大。
1、獲取當(dāng)前時(shí)間
from datetime import datetime # 獲取時(shí)間 獲取當(dāng)前時(shí)間 并且返回的是格式化字符時(shí)間 now = datetime.now() print(now) print(type(now)) print(now.year) print(now.month) print(now.day) print(now.hour) print(now.minute) print(now.second) print(now.microsecond) # 手動(dòng)指定時(shí)間 print(datetime(2023, 2, 20, 20, 50, 00)) # 替換某個(gè)時(shí)間單位的值 print(now.replace(year=2024)) d1 = datetime.now() d2 = datetime(2024, 2, 20, 20, 50, 00) print(d1 - d2)

2、格式化時(shí)間
(1)datetime 轉(zhuǎn) 字符串,通過(guò) strftime()函數(shù)。
from datetime import datetime
now = datetime.now()
# 強(qiáng)制轉(zhuǎn)換字符串
print(str(now))
# 格式化日期 轉(zhuǎn)換 字符串
print(now.strftime("%Y/%m/%d %H:%M:%S"))
print(now.strftime("%Y-%m-%d %H:%M:%S"))
print(now.strftime("%Y/%m/%d"))
print(now.strftime("%Y-%m-%d"))

(2)字符串 轉(zhuǎn) datetime對(duì)象,通過(guò) strptime()函數(shù)。
dates = ['2022-02-20 20:23:35', '2024-02-20 20:23:35'] datelist = [datetime.strptime(i, "%Y-%m-%d %H:%M:%S") for i in dates] print(datelist) # [datetime.datetime(2022, 2, 20, 20, 23, 35), datetime.datetime(2024, 2, 20, 20, 23, 35)]
(3)parse() 解析字符串
將字符串形式的日期解析成 datetime對(duì)象。
# 需要安裝 pip install python-dateutil
from dateutil.parser import parse
print(parse('2/20/2023'))
print(parse('2023-2-20'))
print(parse('2023.2.20'))
print(parse('2023 2 4'))
print(parse('2023, 6, 2'))

3、計(jì)算時(shí)間間隔
時(shí)間間隔 timedelta
import datetime now = datetime.datetime.now() print(now) # 3天后 dt1 = now + datetime.timedelta(3) print(dt1) # 3天前 dt2 = now + datetime.timedelta(-3) print(dt2) # 3小時(shí)30秒后 dt3 = now + datetime.timedelta(hours=3, seconds=30) print(dt3)

三、calendar模塊
calendar模塊的函數(shù)都是日歷相關(guān)的,例如打印某月的字符月歷。
calendar 特點(diǎn):
- calendar 模塊是基于datetime.date.weekday()對(duì)計(jì)算每一周的周數(shù)
- calendar 默認(rèn)星期一是每一周的第一天,星期天是一周的最后一天
- calendar 提供calendar.setfirstweeksday()來(lái)更改指定星期幾為一周的第一天
1、打印日歷
import calendar # 打印指定某年的月歷 print(calendar.month(2023, 5)) # 打印2023年歷 # print(calendar.calendar(2023))

上面示例了一些常見(jiàn)的操作,下面參考文章(感謝博主)中詳細(xì)列舉的各模塊之間的屬性和方法,這里就不重復(fù)造輪子啦。
以上就是一文帶你吃透Python中的日期時(shí)間模塊的詳細(xì)內(nèi)容,更多關(guān)于Python日期時(shí)間模塊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python使用socket連接遠(yuǎn)程服務(wù)器的方法
這篇文章主要介紹了python使用socket連接遠(yuǎn)程服務(wù)器的方法,涉及Python中socket通信的基本技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04
Python實(shí)現(xiàn)單例模式的四種方式詳解
單例模式可以保證一個(gè)類(lèi)僅有一個(gè)實(shí)例,并提供一個(gè)訪(fǎng)問(wèn)它的全局訪(fǎng)問(wèn)點(diǎn)。本文為大家介紹了Python實(shí)現(xiàn)單例模式的四種方式,需要的可以參考一下2022-05-05
使用python構(gòu)建WebSocket客戶(hù)端的教程詳解
WebSocket是一種在客戶(hù)端和服務(wù)器之間實(shí)現(xiàn)雙向通信的協(xié)議,常用于實(shí)時(shí)聊天、實(shí)時(shí)數(shù)據(jù)更新等場(chǎng)景,Python提供了許多庫(kù)來(lái)實(shí)現(xiàn) WebSocket客戶(hù)端,本教程將介紹如何使用Python構(gòu)建WebSocket客戶(hù)端,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
關(guān)于python scrapy中添加cookie踩坑記錄
這篇文章主要介紹了關(guān)于python scrapy中添加cookie踩坑記錄,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Python安裝jupyter notebook報(bào)pywinpty缺少Rust和Cargo問(wèn)題
文章介紹了在安裝pip install jupyter時(shí)遇到的錯(cuò)誤,并分析了原因,錯(cuò)誤是由于缺少Rust和Cargo編譯擴(kuò)展,作者通過(guò)訪(fǎng)問(wèn)rustup.rs下載并安裝Rust,并確保將Rust添加到系統(tǒng)路徑中,重啟電腦后成功解決了問(wèn)題2025-02-02
python執(zhí)行shell并獲取結(jié)果的詳細(xì)示例
在Python中執(zhí)行Shell命令并獲取其結(jié)果,通??梢允褂胹ubprocess模塊,這個(gè)模塊允許我們啟動(dòng)新的進(jìn)程,連接到它們的輸入/輸出/錯(cuò)誤管道,并獲取它們的返回碼,下面是一個(gè)詳細(xì)的示例,展示了如何使用subprocess.run()函數(shù)來(lái)執(zhí)行Shell命令并獲取其輸出,需要的朋友可以參考下2024-07-07
Python?Streamlit制作交互式可視化網(wǎng)頁(yè)應(yīng)用實(shí)例
這篇文章主要為大家介紹了Python?Streamlit制作交互式可視化網(wǎng)頁(yè)應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12

