Python日期與時(shí)間模塊(datetime+time+Calendar+dateuil?)相關(guān)使用講解
1 前言
在開(kāi)發(fā)中經(jīng)常會(huì)遇到查詢?nèi)掌凇r(shí)間、時(shí)間戳,或者日期比較等相關(guān)操作,為了方便以后使用,本文將對(duì)python操作時(shí)間的各種操作做出總結(jié)。
時(shí)間戳: 即以整型或浮點(diǎn)型表示的是一個(gè)以秒為單位的時(shí)間間隔。這個(gè)時(shí)間的基礎(chǔ)值是從1970年的1月1號(hào)零點(diǎn)開(kāi)始算起。
2 datetime 模塊
此模塊常用類有:date、time、datetime、timedelta
導(dǎo)入:
from datetime import *
2.1 date類
獲取當(dāng)前日期:
from datetime import * dt = date.today() print(dt) # 輸出:2022-09-07 print(dt.year) # 2022 print(dt.month) print(dt.day) # 返回星期幾 星期一 = 0 print(dt.weekday()) # 輸出:2 # 返回星期幾 星期一 = 1 print(dt.isoweekday()) # 0001-01-01 # 返回 ctime() 樣式字符串 print(dt.ctime()) # Wed Sep 7 00:00:00 2022 # 修改 年、月、日 print(dt.replace(year=2023)) # 輸出:2023-09-07 # 打印最大/最小日期 print(dt.max) # 9999-12-31 print(dt.min) # 0001-01-01
使用date類的構(gòu)造函數(shù),初始化變量
d = date(2022, 9, 6) print(d) # 輸出:2022-09-06
字符串初始化為date
d = date.fromisoformat("2022-09-06")
print(d) # 2022-09-06
print(type(d)) # <class 'datetime.date'>時(shí)間戳 轉(zhuǎn) date對(duì)象
d = date.fromtimestamp(1662451516) print(d) # 2022-09-06
date 轉(zhuǎn) 字符串
d = date.today() str_date = d.isoformat() print(str_date) # 2022-09-06 字符串
2.2 time類
from datetime import time t1 = time(10, 20, 32) print(t1) # 輸出:10:20:32 # 打印時(shí)分秒 print(t1.hour) print(t1.minute) print(t1.second) # 將對(duì)象轉(zhuǎn)為字符串 res = time.isoformat(t1) # print(t1.isoformat()) # 方式2 print(res) # 輸出:10:20:32 print(type(res)) # 輸出:<class 'str'>
2.3 datetime類
from datetime import datetime
# datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])
t = datetime(2022, 9, 7, 20, 32, 20)
print(t)
# 打印 年月日 時(shí)分秒
print(t.year)
print(t.month)
print(t.day)
print(t.hour)
print(t.minute)
print(t.second)
# 獲取當(dāng)前時(shí)間
today = datetime.now()
print(today)
# 字符串轉(zhuǎn)為datetime
d = datetime.fromisoformat("2022-09-10 12:25:36")
print(type(d)) # <class 'datetime.datetime'>2.4 timedelta類
主要用于計(jì)算日期差異,或者日期相關(guān)操作
2.4.1 時(shí)間增加
from datetime import datetime, timedelta
now = datetime.now()
print(now)
# 加2天
# def __new__(cls, days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
new_time = now + timedelta(days=2)
print(new_time.strftime("%Y-%m-%d %H:%M:%S"))
# 加1周
new_time = now + timedelta(weeks=1)
print(new_time.strftime("%Y-%m-%d %H:%M:%S"))2.4.2 計(jì)算時(shí)間差
from datetime import datetime, date
# 計(jì)算時(shí)間差
now = datetime.now()
# 將字符串轉(zhuǎn)為<class 'datetime.datetime'>
d = datetime.fromisoformat("2022-09-10 12:25:36")
res = d - now
print(res)
print(res.days)
print(res.seconds)
2.5 datetime格式化
from datetime import datetime, date
now = datetime.now()
print(now)
print(now.strftime("%Y-%m-%d %H:%M:%S"))
print(now.strftime("%y-%m-%d %H:%M:%S %A"))
| 符號(hào) | 描述 |
|---|---|
| %y | 兩位數(shù)的年份表示(00-99) |
| %Y | 四位數(shù)的年份表示(0000-9999) |
| %m | 月份(01-12) |
| %d | 月內(nèi)的天(0-31) |
| %H | 24h值小時(shí)數(shù)(0-23) |
| %I | 12小時(shí)小時(shí)數(shù) |
| %M | 分鐘數(shù)(00-59) |
| %S | 秒(00-59) |
| %a | 本地簡(jiǎn)化星期名稱 |
| %A | 本地完整星期名稱 |
| %b | 本地簡(jiǎn)化月份名稱 |
| %B | 本地完整月份名稱 |
| %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ù)(0-53)星期一位星期的開(kāi)始 |
| %x | 本地相應(yīng)的日期表示 |
| %X | 本地相應(yīng)的事假表示 |
| %Z | 當(dāng)前時(shí)區(qū)的名稱 |
| %% | %號(hào)本身 |
3 time 標(biāo)準(zhǔn)庫(kù)
元組表示法:以Python的數(shù)據(jù)結(jié)構(gòu)表示,共有9個(gè)。
| 屬性 | 描述 |
|---|---|
| tm_year | 年 |
| tm_mon | 月(1-12) |
| tm_mday | 日(1-31) |
| tm_hour | 時(shí)(0-23) |
| tm_min | 分(0-59) |
| tm_sec | 秒(0-59) |
| tm_wday | 0-6(0表示周日) |
| tm_yday | 1-366(一年中的第幾天) |
| tm_isdst | 默認(rèn)為-1(是否為夏令時(shí)) |
3.1 時(shí)間操作
import time
# 當(dāng)前timestamp
timestamp = time.time()
print(timestamp)
# 時(shí)間戳 轉(zhuǎn) 時(shí)間元組
# 方式1:time.struct_time(tm_year=2022, tm_mon=9, tm_mday=10, tm_hour=16, tm_min=11, tm_sec=30, tm_wday=3, tm_yday=251, tm_isdst=0)
time_tuple1 = time.localtime()
# 方式2
time_tuple2 = time.localtime(timestamp)
print(time_tuple1)
print(time_tuple2)
# 時(shí)間元組 轉(zhuǎn) 時(shí)間戳
timestamp2 = time.mktime(time_tuple1)
print(timestamp2) # 1662624690.0
# 時(shí)間元組 格式化為 時(shí)間
strftime1 = time.strftime("%Y-%m-%d %H:%M:%S", time_tuple1)
print(strftime1)
# 時(shí)間 格式化為 時(shí)間元組
time_tuple3 = time.strptime("2022-09-10 16:14:18", "%Y-%m-%d %H:%M:%S")
print(time_tuple3)
# 返回一個(gè)可讀的時(shí)間字符串
print(time.ctime()) # Thu Sep 10 16:17:40 2022
print(time.ctime(time.time())) # Thu Sep 10 16:17:40 2022
print(time.asctime())
print(time.asctime(time.localtime()))3.2 程序睡眠
程序睡眠:
# 程序暫停/睡眠3s time.sleep(3)
4 Calendar 日歷模塊
打印日歷:
import calendar
cal = calendar.month(2022,9)
print(cal) # str
"""
September 2022
Mo Tu We Th Fr Sa Su
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
"""閏年相關(guān):
import calendar # 判斷是否為閏年 print(calendar.isleap(2000)) # True print(calendar.isleap(2022)) # False # 查看2個(gè)年份之間的閏年總和 print(calendar.leapdays(2008, 2060)) # 13
5 dateuil 日期模塊
安裝:
pip install dateutils
from datetime import datetime, date
from dateutil.relativedelta import relativedelta, MO, TU, WE, TH, FR, SA, SU
now = datetime.now()
today = date.today()
print(now)
print(today)
"""
時(shí)間增加
dt1=None, dt2=None,
years=0, months=0, days=0, leapdays=0, weeks=0,
hours=0, minutes=0, seconds=0, microseconds=0,
year=None, month=None, day=None, weekday=None,
yearday=None, nlyearday=None,
hour=None, minute=None, second=None, microsecond=None
"""
# 下個(gè)月
next_month = now + relativedelta(months=1)
print(next_month)
# 一年后 前一個(gè)月
next_year_prev_month = now + relativedelta(years=1, months=-1)
print(next_year_prev_month)
# 下周五(前提是今天為周六、周天)
next_fr = now + relativedelta(weekday=FR)
print(next_fr)
# 計(jì)算兩個(gè)日期差
res = relativedelta(date(2060, 6, 20), today)
print(res) # relativedelta(years=+37, months=+9, days=+12)
print(res.years) # 37到此這篇關(guān)于Python日期與時(shí)間模塊(datetime+time+Calendar+dateuil )相關(guān)使用講解的文章就介紹到這了,更多相關(guān)Python時(shí)間模塊 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python中time庫(kù)的使用(日期時(shí)間)
- python datetime 和時(shí)間戳互相轉(zhuǎn)換問(wèn)題
- python time時(shí)間庫(kù)詳解
- Python標(biāo)準(zhǔn)庫(kù)time使用方式詳解
- python time模塊時(shí)間戳 與 結(jié)構(gòu)化時(shí)間詳解
- Python?time模塊之時(shí)間戳與結(jié)構(gòu)化時(shí)間的使用
- python中time庫(kù)使用詳解
- Python?time時(shí)間格式化和設(shè)置時(shí)區(qū)實(shí)現(xiàn)代碼詳解
相關(guān)文章
用Python實(shí)現(xiàn)簡(jiǎn)單的人臉識(shí)別功能步驟詳解
這篇文章主要介紹了用Python實(shí)現(xiàn)簡(jiǎn)單的人臉識(shí)別功能步驟詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Python實(shí)現(xiàn)繁體轉(zhuǎn)為簡(jiǎn)體的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)繁體轉(zhuǎn)為簡(jiǎn)體的方法,涉及Python編碼轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2018-12-12
簡(jiǎn)單了解Python matplotlib線的屬性
這篇文章主要介紹了簡(jiǎn)單了解Python matplotlib線的屬性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-06-06
Python列表元組字典集合存儲(chǔ)結(jié)構(gòu)詳解
本文詳細(xì)介紹了Python中列表、元組、字典和集合等數(shù)據(jù)結(jié)構(gòu)的定義、操作和用法,包括數(shù)據(jù)類型的相互嵌套、常用操作方法、循環(huán)遍歷等2025-02-02
python實(shí)現(xiàn)Zabbix-API監(jiān)控
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)Zabbix-API監(jiān)控,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
一小時(shí)學(xué)會(huì)TensorFlow2之Fashion Mnist
這篇文章主要介紹了TensorFlow2之Fashion Mnist,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
Python新手學(xué)習(xí)標(biāo)準(zhǔn)庫(kù)模塊命名
在本篇內(nèi)容中,小編給大家分享的是關(guān)于Python標(biāo)準(zhǔn)庫(kù)模塊命名詳解內(nèi)容,有需要的朋友們可以參考下。2020-05-05

