首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python 日期時間差計算:天數、週數、月數、年數完整方法

     編輯:更多程式設計知識

核心模組

  • datetime:標準庫,基本日期時間運算
  • dateutil.relativedelta:精確年/月/日差異(需安裝 python-dateutil)
  • dateutil.rrule:依規則計算週數/天數

基本天數差異


from datetime import date

d1 = date(2024, 1, 1)
d2 = date(2024, 12, 31)
delta = d2 - d1
print(delta.days)  # 365

週數計算(rrule)


from dateutil import rrule
from datetime import date

def weeks_between(start, end):
    """計算兩日期間完整週數(以週為單位計數)"""
    return rrule.rrule(rrule.WEEKLY, dtstart=start, until=end).count()

# 測試
starts = [date(2005, 1, 3), date(2005, 1, 4)]
end = date(2005, 1, 10)
for s in starts:
    days = rrule.rrule(rrule.DAILY, dtstart=s, until=end).count()
    weeks = weeks_between(s, end)
    print(f"{days} 天 = {weeks} 週")
# 輸出:
# 7 天 = 1 週
# 8 天 = 2 週 (rrule 以整數週計算)

精確年/月/日差異


from dateutil.relativedelta import relativedelta
from datetime import date

d1 = date(2020, 2, 28)
d2 = date(2024, 3, 1)

diff = relativedelta(d2, d1)
print(f"{diff.years} 年 {diff.months} 月 {diff.days} 天")
# 4 年 0 月 2 天

# 也可直接取得總月數
total_months = diff.years * 12 + diff.months
print(f"總月數: {total_months}")

常見需求對照表

需求推薦方法
單純天數差(d2 - d1).days
週數(整數)rrule(WEEKLY, dtstart=d1, until=d2).count()
月數差(近似)(d2.year - d1.year) * 12 + d2.month - d1.month
精確年/月/日relativedelta(d2, d1)
工作日天數numpy.busday_count 或自行迴圈判斷
兩時間完整差異datetime.combine + relativedelta

安裝 dateutil

pip install python-dateutil
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved