亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python datetime 模塊常用功能(輕松搞定時(shí)間處理)

 更新時(shí)間:2025年07月29日 09:52:59   作者:滿目828  
Python的datetime模塊是處理日期時(shí)間的核心工具,包含date、time、datetime、timedelta四大類(lèi),用于獲取當(dāng)前時(shí)間、格式轉(zhuǎn)換、時(shí)間計(jì)算及時(shí)區(qū)處理,解決常見(jiàn)時(shí)間問(wèn)題,適用于日志記錄、數(shù)據(jù)處理等場(chǎng)景,本文介紹Python datetime 模塊常用功能,感興趣的朋友一起看看吧

前言

在 Python 中,datetime模塊是處理日期和時(shí)間的核心工具,提供了簡(jiǎn)潔易用的類(lèi)和方法,能輕松解決時(shí)間解析、轉(zhuǎn)換、計(jì)算等常見(jiàn)需求。本文將系統(tǒng)梳理datetime模塊的常用功能,從基礎(chǔ)到進(jìn)階,讓你徹底掌握時(shí)間處理技巧。

一、核心類(lèi):datetime 模塊的 "四大金剛"

datetime模塊包含四個(gè)核心類(lèi),分別處理不同粒度的時(shí)間信息:

類(lèi)名功能描述示例
date處理日期(年、月、日)date(2023, 10, 1) → 2023 年 10 月 1 日
time處理時(shí)間(時(shí)、分、秒、微秒)time(15, 30, 45) → 15 時(shí) 30 分 45 秒
datetime處理日期 + 時(shí)間(最常用)datetime(2023, 10, 1, 15, 30, 45)
timedelta表示時(shí)間間隔(用于時(shí)間加減)timedelta(days=3) → 3 天

二、獲取當(dāng)前時(shí)間:datetime.now () 的妙用

獲取當(dāng)前日期和時(shí)間是最基礎(chǔ)的操作,datetime.now() 可直接返回當(dāng)前本地時(shí)間:

from datetime import datetime, date, time
# 1. 獲取當(dāng)前日期+時(shí)間(datetime對(duì)象)
now = datetime.now()
print(now)  # 輸出:2023-10-01 15:30:45.123456
print(type(now))  # 輸出:<class 'datetime.datetime'>
# 2. 單獨(dú)獲取當(dāng)前日期(date對(duì)象)
today = date.today()
print(today)  # 輸出:2023-10-01
# 3. 單獨(dú)獲取當(dāng)前時(shí)間(time對(duì)象)
current_time = datetime.now().time()
print(current_time)  # 輸出:15:30:45.123456
  • datetime.now() 包含年、月、日、時(shí)、分、秒、微秒;
  • 可通過(guò) datetime.utcnow() 獲取當(dāng)前 UTC 時(shí)間(世界協(xié)調(diào)時(shí)間)。

三、時(shí)間對(duì)象的屬性與轉(zhuǎn)換

datetime、date、time 對(duì)象提供了豐富的屬性,可直接獲取年、月、日等信息,也能轉(zhuǎn)換為字符串:

1. 訪問(wèn)時(shí)間屬性

dt = datetime(2023, 10, 1, 15, 30, 45)
# 獲取年、月、日
print(dt.year)   # 2023
print(dt.month)  # 10
print(dt.day)    # 1
# 獲取時(shí)、分、秒、微秒
print(dt.hour)   # 15
print(dt.minute) # 30
print(dt.second) # 45
print(dt.microsecond)  # 0(手動(dòng)創(chuàng)建時(shí)未指定,默認(rèn)為0)

2. 轉(zhuǎn)換為字符串(格式化輸出)

用 strftime(format) 方法將時(shí)間對(duì)象轉(zhuǎn)為自定義格式的字符串(format 為格式化符號(hào)):

dt = datetime(2023, 10, 1, 15, 30, 45)
# 常用格式化符號(hào)
print(dt.strftime("%Y-%m-%d"))       # 2023-10-01(年-月-日)
print(dt.strftime("%H:%M:%S"))       # 15:30:45(時(shí):分:秒,24小時(shí)制)
print(dt.strftime("%Y年%m月%d日 %H:%M"))  # 2023年10月01日 15:30
print(dt.strftime("%A, %B %d, %Y"))  # Sunday, October 01, 2023(星期、月份全稱(chēng))

常用格式化符號(hào)表

符號(hào)含義示例
%Y4 位年份2023
%m2 位月份(01-12)10
%d2 位日期(01-31)01
%H24 小時(shí)制小時(shí)(00-23)15
%I12 小時(shí)制小時(shí)(01-12)03
%M2 位分鐘(00-59)30
%S2 位秒數(shù)(00-59)45
%a星期縮寫(xiě)(如 Sun)Sun
%A星期全稱(chēng)(如 Sunday)Sunday
%b月份縮寫(xiě)(如 Oct)Oct
%B月份全稱(chēng)(如 October)October

3. 字符串轉(zhuǎn)時(shí)間對(duì)象(解析)

用 strptime(date_string, format) 方法將字符串解析為時(shí)間對(duì)象(format 需與字符串格式一致):

# 解析日期字符串
date_str = "2023-10-01"
dt = datetime.strptime(date_str, "%Y-%m-%d")
print(dt)  # 輸出:2023-10-01 00:00:00(時(shí)間部分默認(rèn)00:00:00)
# 解析帶時(shí)間的字符串
datetime_str = "2023-10-01 15:30:45"
dt = datetime.strptime(datetime_str, "%Y-%m-%d %H:%M:%S")
print(dt)  # 輸出:2023-10-01 15:30:45
  • 若字符串格式與 format 不匹配,會(huì)報(bào) ValueError,需確保格式一致。

四、時(shí)間計(jì)算:timedelta 的靈活運(yùn)用

timedelta 表示時(shí)間間隔,可與 datetime 對(duì)象進(jìn)行加減運(yùn)算,實(shí)現(xiàn) “多少天后 / 前的時(shí)間” 等需求:

1. 創(chuàng)建 timedelta 對(duì)象

from datetime import timedelta
# 常用參數(shù):days, seconds, minutes, hours, weeks
delta1 = timedelta(days=3)         # 3天
delta2 = timedelta(hours=12)       # 12小時(shí)
delta3 = timedelta(weeks=1, days=2)  # 1周+2天=9天

2. 時(shí)間加減運(yùn)算

now = datetime.now()
# 計(jì)算3天后的時(shí)間
future = now + timedelta(days=3)
print(f"3天后:{future.strftime('%Y-%m-%d')}")
# 計(jì)算1小時(shí)30分鐘前的時(shí)間
past = now - timedelta(hours=1, minutes=30)
print(f"1小時(shí)30分鐘前:{past.strftime('%H:%M')}")
# 兩個(gè)datetime對(duì)象相減,得到timedelta
delta = future - now
print(f"時(shí)間間隔:{delta.days}天 {delta.seconds//3600}小時(shí)")  # 3天 0小時(shí)

3. 實(shí)用場(chǎng)景:計(jì)算兩個(gè)日期相差的天數(shù)

date1 = date(2023, 1, 1)
date2 = date(2023, 12, 31)
delta = date2 - date1
print(f"2023年共有{delta.days}天")  # 輸出:364(2023不是閏年)

五、日期的替換與調(diào)整

datetime 對(duì)象是不可變的,但可通過(guò) replace() 方法創(chuàng)建修改后的新對(duì)象:

dt = datetime(2023, 10, 1, 15, 30)
# 替換年份和月份
new_dt = dt.replace(year=2024, month=1)
print(new_dt)  # 2024-01-01 15:30:00
# 替換時(shí)間為0點(diǎn)0分
midnight = dt.replace(hour=0, minute=0, second=0, microsecond=0)
print(midnight)  # 2023-10-01 00:00:00

六、時(shí)區(qū)處理(進(jìn)階)

默認(rèn)情況下,datetime 不包含時(shí)區(qū)信息( naive 時(shí)間),處理跨時(shí)區(qū)時(shí)間需用 pytz 庫(kù)或 Python 3.9+ 的 zoneinfo 模塊(推薦):

1. 用 zoneinfo 處理時(shí)區(qū)(Python 3.9+)

from datetime import datetime
from zoneinfo import ZoneInfo  # 需Python 3.9+
# 創(chuàng)建帶時(shí)區(qū)的datetime對(duì)象
# 北京時(shí)間(Asia/Shanghai)
beijing_time = datetime(2023, 10, 1, 8, 0, tzinfo=ZoneInfo("Asia/Shanghai"))
# 紐約時(shí)間(America/New_York)
newyork_time = datetime(2023, 10, 1, 8, 0, tzinfo=ZoneInfo("America/New_York"))
print(f"北京時(shí)間:{beijing_time}")  # 2023-10-01 08:00:00+08:00
print(f"紐約時(shí)間:{newyork_time}")  # 2023-10-01 08:00:00-04:00
# 轉(zhuǎn)換為UTC時(shí)間
utc_time = beijing_time.astimezone(ZoneInfo("UTC"))
print(f"對(duì)應(yīng)的UTC時(shí)間:{utc_time}")  # 2023-09-30 23:00:00+00:00

2. 時(shí)區(qū)轉(zhuǎn)換

# 將紐約時(shí)間轉(zhuǎn)換為北京時(shí)間
beijing_from_newyork = newyork_time.astimezone(ZoneInfo("Asia/Shanghai"))
print(f"紐約時(shí)間{newyork_time.strftime('%H:%M')} 對(duì)應(yīng)北京時(shí)間:{beijing_from_newyork.strftime('%H:%M')}")
# 輸出:紐約時(shí)間08:00 對(duì)應(yīng)北京時(shí)間20:00(時(shí)差12小時(shí))

七、常見(jiàn)錯(cuò)誤與解決方案

錯(cuò)誤:字符串解析格式不匹配

# 錯(cuò)誤示例:字符串是"10/01/2023",格式用了"%Y-%m-%d"
datetime.strptime("10/01/2023", "%Y-%m-%d")  # ValueError
# 正確:格式改為"%m/%d/%Y"
datetime.strptime("10/01/2023", "%m/%d/%Y")  # 2023-10-01 00:00:00

錯(cuò)誤:datetime 對(duì)象不可直接修改

dt = datetime(2023, 10, 1)
dt.year = 2024  # AttributeError: can't set attribute
# 正確:用replace()
dt = dt.replace(year=2024)

錯(cuò)誤:不同時(shí)區(qū)的時(shí)間直接比較

# 避免直接比較naive時(shí)間(無(wú)時(shí)區(qū))和aware時(shí)間(有時(shí)區(qū))
naive_dt = datetime(2023, 10, 1)
aware_dt = datetime(2023, 10, 1, tzinfo=ZoneInfo("UTC"))
naive_dt == aware_dt  # 報(bào)錯(cuò):TypeError: can't compare offset-naive and offset-aware datetimes

總結(jié)

datetime模塊是 Python 處理時(shí)間的 “瑞士軍刀”,核心功能包括:

  • datetime.now()獲取當(dāng)前時(shí)間;
  • strftime()strptime()實(shí)現(xiàn)時(shí)間與字符串的轉(zhuǎn)換;
  • timedelta進(jìn)行時(shí)間加減計(jì)算;
  • replace()調(diào)整日期或時(shí)間;
  • zoneinfo(或pytz)處理時(shí)區(qū)問(wèn)題。

掌握這些方法,能輕松應(yīng)對(duì)日志記錄、日程計(jì)算、數(shù)據(jù)時(shí)間戳解析等常見(jiàn)場(chǎng)景。建議根據(jù)具體需求選擇合適的類(lèi)(datetime最常用),并注意字符串格式與時(shí)間對(duì)象的轉(zhuǎn)換細(xì)節(jié)。

到此這篇關(guān)于Python datetime 模塊常用功能(輕松搞定時(shí)間處理)的文章就介紹到這了,更多相關(guān)Python datetime 模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在PyCharm的 Terminal(終端)切換Python版本的方法

    在PyCharm的 Terminal(終端)切換Python版本的方法

    這篇文章主要介紹了在PyCharm的 Terminal(終端)切換Python版本的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python引用模塊和查找模塊路徑

    Python引用模塊和查找模塊路徑

    這篇文章主要介紹了Python引用模塊和Python查找模塊路徑的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • python 字典操作提取key,value的方法

    python 字典操作提取key,value的方法

    這篇文章主要介紹了python 字典操作提取key,value的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • python正則表達(dá)式查找和替換內(nèi)容的實(shí)例詳解

    python正則表達(dá)式查找和替換內(nèi)容的實(shí)例詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于python正則表達(dá)式查找和替換內(nèi)容的實(shí)例詳解內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)參考下。
    2021-10-10
  • python字符串拼接+和join的區(qū)別詳解

    python字符串拼接+和join的區(qū)別詳解

    這篇文章主要給大家介紹了關(guān)于python字符串拼接+和join的區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python使用PIL庫(kù)拼接圖片的詳細(xì)教程

    Python使用PIL庫(kù)拼接圖片的詳細(xì)教程

    在圖像處理中,拼接圖片是一項(xiàng)常見(jiàn)的任務(wù),無(wú)論是為了創(chuàng)建全景圖、合并多張圖片,還是為了展示對(duì)比,拼接圖片都能帶來(lái)很大的便利,Python的Pillow庫(kù)(PIL的一個(gè)分支)提供了強(qiáng)大的圖像處理功能,包括圖片的拼接,下面是一個(gè)詳細(xì)的教程,需要的朋友可以參考下
    2024-12-12
  • python爬蟲(chóng)之利用selenium模塊自動(dòng)登錄CSDN

    python爬蟲(chóng)之利用selenium模塊自動(dòng)登錄CSDN

    這篇文章主要介紹了python爬蟲(chóng)之利用selenium模塊自動(dòng)登錄CSDN,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-04-04
  • Python Pexpect庫(kù)的簡(jiǎn)單使用方法

    Python Pexpect庫(kù)的簡(jiǎn)單使用方法

    這篇文章主要介紹了Python Pexpect庫(kù)的簡(jiǎn)單使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 利用一個(gè)簡(jiǎn)單的例子窺探CPython內(nèi)核的運(yùn)行機(jī)制

    利用一個(gè)簡(jiǎn)單的例子窺探CPython內(nèi)核的運(yùn)行機(jī)制

    這篇文章主要介紹了利用一個(gè)簡(jiǎn)單的例子窺探CPython內(nèi)核的運(yùn)行機(jī)制,作者通過(guò)一個(gè)簡(jiǎn)單的輸出函數(shù)深入、介紹了CPython源碼C代碼中的一些函數(shù),需要的朋友可以參考下
    2015-03-03
  • Python中parsel兩種獲取數(shù)據(jù)方式小結(jié)

    Python中parsel兩種獲取數(shù)據(jù)方式小結(jié)

    本文主要介紹了Python中parsel兩種獲取數(shù)據(jù)方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論