Python日期與時(shí)間模塊(datetime+time+Calendar+dateuil?)相關(guān)使用講解
1 前言
在開發(fā)中經(jīng)常會(huì)遇到查詢?nèi)掌?、時(shí)間、時(shí)間戳,或者日期比較等相關(guān)操作,為了方便以后使用,本文將對python操作時(shí)間的各種操作做出總結(jié)。
時(shí)間戳: 即以整型或浮點(diǎn)型表示的是一個(gè)以秒為單位的時(shí)間間隔。這個(gè)時(shí)間的基礎(chǔ)值是從1970年的1月1號零點(diǎn)開始算起。
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對象
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) # 將對象轉(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"))
符號 | 描述 |
---|---|
%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 | 本地簡化星期名稱 |
%A | 本地完整星期名稱 |
%b | 本地簡化月份名稱 |
%B | 本地完整月份名稱 |
%c | 本地相應(yīng)的日期表示和時(shí)間表示 |
%j | 年內(nèi)的一天(001-366) |
%p | 本地A.M.或P.M.的等價(jià)符 |
%U | 一年中的星期數(shù)(00-53)星期天為星期的開始 |
%w | 星期(0-6),星期天為星期的開始 |
%W | 一年中的星期數(shù)(0-53)星期一位星期的開始 |
%x | 本地相應(yīng)的日期表示 |
%X | 本地相應(yīng)的事假表示 |
%Z | 當(dāng)前時(shí)區(qū)的名稱 |
%% | %號本身 |
3 time 標(biāo)準(zhǔn)庫
元組表示法:以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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中創(chuàng)建以及刪除虛擬環(huán)境的幾種方法總結(jié)
在Python?中創(chuàng)建虛擬環(huán)境非常容易,但是刪除虛擬環(huán)境可能會(huì)有一些挑戰(zhàn),這篇文章主要給大家介紹了關(guān)于python中創(chuàng)建以及刪除虛擬環(huán)境的幾種方法,需要的朋友可以參考下2024-03-03老生常談Python startswith()函數(shù)與endswith函數(shù)
下面小編就為大家?guī)硪黄仙U凱ython startswith()函數(shù)與endswith函數(shù)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09python+selenium實(shí)現(xiàn)登錄賬戶后自動(dòng)點(diǎn)擊的示例
本篇文章主要介紹了python+selenium實(shí)現(xiàn)登錄賬戶后自動(dòng)點(diǎn)擊的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12