日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python日期與時間模塊(datetime+time+Calendar+dateuil?)相關使用講解_python

作者:有勇氣的牛排 ? 更新時間: 2022-11-03 編程語言

1 前言

在開發中經常會遇到查詢日期、時間、時間戳,或者日期比較等相關操作,為了方便以后使用,本文將對python操作時間的各種操作做出總結。

時間戳: 即以整型或浮點型表示的是一個以秒為單位的時間間隔。這個時間的基礎值是從1970年的1月1號零點開始算起。

2 datetime 模塊

此模塊常用類有:date、time、datetime、timedelta

導入:

from datetime import *

2.1 date類

獲取當前日期:

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類的構造函數,初始化變量

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'>

時間戳 轉 date對象

d = date.fromtimestamp(1662451516)
print(d)    	# 2022-09-06

date 轉 字符串

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

# 打印時分秒
print(t1.hour)
print(t1.minute)
print(t1.second)

# 將對象轉為字符串
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)

# 打印 年月日 時分秒
print(t.year)
print(t.month)
print(t.day)
print(t.hour)
print(t.minute)
print(t.second)

# 獲取當前時間
today = datetime.now()
print(today)

# 字符串轉為datetime
d = datetime.fromisoformat("2022-09-10 12:25:36")
print(type(d))	# <class 'datetime.datetime'>

2.4 timedelta類

主要用于計算日期差異,或者日期相關操作

2.4.1 時間增加

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 計算時間差

from datetime import datetime, date

# 計算時間差
now = datetime.now()
# 將字符串轉為<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 兩位數的年份表示(00-99)
%Y 四位數的年份表示(0000-9999)
%m 月份(01-12)
%d 月內的天(0-31)
%H 24h值小時數(0-23)
%I 12小時小時數
%M 分鐘數(00-59)
%S 秒(00-59)
%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化月份名稱
%B 本地完整月份名稱
%c 本地相應的日期表示和時間表示
%j 年內的一天(001-366)
%p 本地A.M.或P.M.的等價符
%U 一年中的星期數(00-53)星期天為星期的開始
%w 星期(0-6),星期天為星期的開始
%W 一年中的星期數(0-53)星期一位星期的開始
%x 本地相應的日期表示
%X 本地相應的事假表示
%Z 當前時區的名稱
%% %號本身

3 time 標準庫

元組表示法:以Python的數據結構表示,共有9個。

屬性 描述
tm_year
tm_mon 月(1-12)
tm_mday 日(1-31)
tm_hour 時(0-23)
tm_min 分(0-59)
tm_sec 秒(0-59)
tm_wday 0-6(0表示周日)
tm_yday 1-366(一年中的第幾天)
tm_isdst 默認為-1(是否為夏令時)

3.1 時間操作

import time

# 當前timestamp
timestamp = time.time()
print(timestamp)

# 時間戳 轉 時間元組
# 方式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)

# 時間元組 轉 時間戳
timestamp2 = time.mktime(time_tuple1)
print(timestamp2)  # 1662624690.0

# 時間元組 格式化為 時間
strftime1 = time.strftime("%Y-%m-%d %H:%M:%S", time_tuple1)
print(strftime1)
# 時間 格式化為 時間元組
time_tuple3 = time.strptime("2022-09-10 16:14:18", "%Y-%m-%d %H:%M:%S")
print(time_tuple3)

# 返回一個可讀的時間字符串
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
"""

閏年相關:

import calendar

# 判斷是否為閏年
print(calendar.isleap(2000))  # True
print(calendar.isleap(2022))  # False

# 查看2個年份之間的閏年總和
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)

"""
    時間增加
    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
"""
# 下個月
next_month = now + relativedelta(months=1)
print(next_month)

# 一年后 前一個月
next_year_prev_month = now + relativedelta(years=1, months=-1)
print(next_year_prev_month)

# 下周五(前提是今天為周六、周天)
next_fr = now + relativedelta(weekday=FR)
print(next_fr)

# 計算兩個日期差
res = relativedelta(date(2060, 6, 20), today)
print(res)          # relativedelta(years=+37, months=+9, days=+12)
print(res.years)    # 37

原文鏈接:https://blog.csdn.net/zx77588023/article/details/126726690

欄目分類
最近更新