最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

一、核心類:datetime 模塊的 "四大金剛"

datetime模塊包含四個核心類,分別處理不同粒度的時間信息:

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

二、獲取當前時間:datetime.now () 的妙用

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

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

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

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

1. 訪問時間屬性

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

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

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

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

常用格式化符號表

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

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

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

# 解析日期字符串
date_str = "2023-10-01"
dt = datetime.strptime(date_str, "%Y-%m-%d")
print(dt)  # 輸出:2023-10-01 00:00:00(時間部分默認00:00:00)
# 解析帶時間的字符串
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 不匹配,會報 ValueError,需確保格式一致。

四、時間計算:timedelta 的靈活運用

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

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

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

2. 時間加減運算

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

3. 實用場景:計算兩個日期相差的天數(shù)

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

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

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

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

六、時區(qū)處理(進階)

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

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

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

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

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

七、常見錯誤與解決方案

錯誤:字符串解析格式不匹配

# 錯誤示例:字符串是"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

錯誤:datetime 對象不可直接修改

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

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

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

總結

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

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

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

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

相關文章

  • 應用OpenCV和Python進行SIFT算法的實現(xiàn)詳解

    應用OpenCV和Python進行SIFT算法的實現(xiàn)詳解

    這篇文章主要介紹了應用OpenCV和Python進行SIFT算法的實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • 如何定義TensorFlow輸入節(jié)點

    如何定義TensorFlow輸入節(jié)點

    今天小編就為大家分享一篇如何定義TensorFlow輸入節(jié)點,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 解決django中form表單設置action后無法回到原頁面的問題

    解決django中form表單設置action后無法回到原頁面的問題

    這篇文章主要介紹了解決django中form表單設置action后無法回到原頁面的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • np.ones的使用小結

    np.ones的使用小結

    本文主要介紹了np.ones的使用小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • 學會Python數(shù)據(jù)可視化必須嘗試這7個庫

    學會Python數(shù)據(jù)可視化必須嘗試這7個庫

    數(shù)據(jù)可視化是使用一些繪圖和圖形更詳細地理解數(shù)據(jù)的過程.最著名的庫之一是 matplotlib,它可以繪制幾乎所有您可以想象的繪圖類型.matplotlib 唯一的問題是初學者很難掌握.在本文中,我將介紹七個數(shù)據(jù)可視化庫,你可以嘗試使用它們來代替 matplotlib ,需要的朋友可以參考下
    2021-06-06
  • Python面向?qū)ο缶幊讨惖姆庋b

    Python面向?qū)ο缶幊讨惖姆庋b

    這篇文章主要介紹了Python面向?qū)ο缶幊讨惖姆庋b封裝指屬性和方法的抽象,屬性的抽象又指對類的屬性進行定義、隔離和保護,下面來看看文章的具體內(nèi)容吧,需要的朋友可以參考一下,希望對你有所幫助
    2021-11-11
  • 詳解Python數(shù)據(jù)分析--Pandas知識點

    詳解Python數(shù)據(jù)分析--Pandas知識點

    這篇文章主要介紹了Python數(shù)據(jù)分析--Pandas知識點,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • 利用Python實現(xiàn)快捷操作文件和文件夾

    利用Python實現(xiàn)快捷操作文件和文件夾

    shutil是Python標準庫中的一個模塊,提供了許多用于文件和文件夾操作的高級接口,本文主要詳細介紹了Python如何使用shutil實現(xiàn)快捷操作文件和文件夾,需要的可以參考下
    2024-02-02
  • python安裝win32com.client的實現(xiàn)示例

    python安裝win32com.client的實現(xiàn)示例

    win32com.client是Python操作Windows COM對象的模塊,用于與Office交互,本文主要介紹了python安裝win32com.client的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2025-06-06
  • 從零開始安裝Conda并搭建Python環(huán)境的全過程

    從零開始安裝Conda并搭建Python環(huán)境的全過程

    conda是一個開源的包、環(huán)境管理器,可以用于在同一個機器上創(chuàng)建不同的虛擬環(huán)境,這篇文章主要介紹了安裝Conda并搭建Python環(huán)境的相關資料,需要的朋友可以參考下
    2025-04-04

最新評論

思南县| 湖州市| 林甸县| 黄梅县| 上高县| 彭泽县| 区。| 托里县| 韶山市| 罗城| 三门峡市| 阜城县| 武穴市| 临泽县| 阿拉善左旗| 信宜市| 图木舒克市| 漾濞| 敖汉旗| 长兴县| 尤溪县| 鹿邑县| 新竹市| 伊吾县| 朝阳市| 大余县| 新乡市| 莲花县| 龙井市| 宝山区| 汨罗市| 尚志市| 顺平县| 静宁县| 新竹县| 十堰市| 东光县| 陆河县| 军事| 宁远县| 阿克陶县|