欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

在 Python 中,datetime模塊是處理日期和時間的核心工具,提供了簡潔易用的類和方法,能輕松解決時間解析、轉換、計算等常見需求。本文將系統(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é)調時間)。

三、時間對象的屬性與轉換

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

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. 轉換為字符串(格式化輸出)

用 strftime(format) 方法將時間對象轉為自定義格式的字符串(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. 字符串轉時間對象(解析)

用 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不是閏年)

五、日期的替換與調整

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
# 轉換為UTC時間
utc_time = beijing_time.astimezone(ZoneInfo("UTC"))
print(f"對應的UTC時間:{utc_time}")  # 2023-09-30 23:00:00+00:00

2. 時區(qū)轉換

# 將紐約時間轉換為北京時間
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)時間與字符串的轉換;
  • timedelta進行時間加減計算;
  • replace()調整日期或時間;
  • zoneinfo(或pytz)處理時區(qū)問題。

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

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

相關文章

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

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

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

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

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

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

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

    python正則表達式查找和替換內容的實例詳解

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

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

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

    Python使用PIL庫拼接圖片的詳細教程

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

    python爬蟲之利用selenium模塊自動登錄CSDN

    這篇文章主要介紹了python爬蟲之利用selenium模塊自動登錄CSDN,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-04-04
  • Python Pexpect庫的簡單使用方法

    Python Pexpect庫的簡單使用方法

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

    利用一個簡單的例子窺探CPython內核的運行機制

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

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

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

最新評論