Python datetime模块

Python datetime模块知识点汇总

Python datetime模块知识点汇总

编程小白也能看懂的日期时间处理指南

什么是datetime模块?

datetime模块是Python内置的日期和时间处理工具包,就像你手机上的日历和时钟应用一样,可以帮你处理各种日期和时间相关的问题。

📅 想象datetime模块就是一个时间管家,帮你记住日期、计算时间差、设置闹钟(定时任务)等

为什么要使用datetime模块?

  • 计算日期差(比如计算距离生日还有多少天)
  • 格式化日期显示(把2023-01-01显示成”2023年1月1日”)
  • 解析字符串中的日期(从”2023年1月1日”识别出日期)
  • 处理时区问题(全球不同地区的时间转换)
  • 记录事件发生的时间戳

datetime的四个核心类

1. date类 – 处理日期

只关心年月日,不关心具体时间(几点几分)

from datetime import date

# 创建一个日期
d = date(2023, 8, 15) # 2023年8月15日

# 获取今天的日期
today = date.today()

# 获取日期的各个部分
print(today.year) # 2023(年)
print(today.month) # 8(月)
print(today.day) # 15(日)

# 获取星期几(星期一为0,星期日为6)
print(today.weekday()) # 如果是星期二,返回1

2. time类 – 处理时间

只关心时间(几点几分几秒),不关心具体日期

from datetime import time

# 创建一个时间
t = time(14, 30, 45) # 14:30:45(下午2点30分45秒)

# 获取时间的各个部分
print(t.hour) # 14(小时)
print(t.minute) # 30(分钟)
print(t.second) # 45(秒)

datetime核心类(续)

3. datetime类 – 日期+时间

同时包含日期和时间,最常用的类

from datetime import datetime

# 创建一个日期时间
dt = datetime(2023, 8, 15, 14, 30, 45) # 2023-08-15 14:30:45

# 获取当前日期和时间
now = datetime.now()

# 获取日期时间的各个部分
print(now.year) # 年
print(now.month) # 月
print(now.day) # 日
print(now.hour) # 小时
print(now.minute) # 分钟
print(now.second) # 秒

4. timedelta类 – 时间间隔

表示两个时间点之间的间隔(时间差)

from datetime import datetime, timedelta

# 创建一个时间间隔
# 表示3天5小时30分钟
delta = timedelta(days=3, hours=5, minutes=30)

# 计算未来日期
now = datetime.now()
future = now + delta # 3天5小时30分钟后的时间

# 计算过去日期
past = now – timedelta(weeks=2) # 两周前

日期时间格式化

将日期时间转换成字符串,或从字符串解析出日期时间

日期时间 → 字符串(strftime)

使用strftime方法将日期时间转换成自定义格式的字符串

now = datetime.now()

# 格式化为:2023-08-15
date_str = now.strftime(“%Y-%m-%d”)

# 格式化为:2023年08月15日 14:30:45
datetime_str = now.strftime(“%Y年%m月%d日 %H:%M:%S”)

# 常用格式符号:
# %Y: 四位年份(2023)
# %m: 两位月份(08)
# %d: 两位日期(15)
# %H: 24小时制小时(00-23)
# %M: 分钟(00-59)
# %S: 秒(00-59)
# %A: 星期全名(Tuesday)

字符串 → 日期时间(strptime)

使用strptime方法将字符串解析为日期时间对象

# 从字符串解析日期时间
date_str = “2023-08-15”
dt = datetime.strptime(date_str, “%Y-%m-%d”)

# 解析更复杂的格式
datetime_str = “2023年08月15日 14:30:45”
dt = datetime.strptime(datetime_str, “%Y年%m月%d日 %H:%M:%S”)

实战应用场景

1. 计算两个日期相差多少天

from datetime import date

date1 = date(2023, 1, 1)
date2 = date(2023, 8, 15)

# 计算日期差
delta = date2 – date1

print(delta.days) # 226(天)

2. 计算某个日期是星期几

from datetime import date

d = date(2023, 8, 15)

# 星期几(0=星期一,6=星期日)
weekday = d.weekday()

# 转换为中文星期
weekdays = [“星期一”, “星期二”, “星期三”, “星期四”, “星期五”, “星期六”, “星期日”]
print(weekdays[weekday]) # 例如:”星期二”

3. 生成最近一周的日期列表

from datetime import datetime, timedelta

today = datetime.now().date()

# 生成最近7天的日期
date_list = [today – timedelta(days=i) for i in range(7)]

for d in date_list:
    print(d.strftime(“%Y-%m-%d”))

注意事项和小技巧

📌 重要注意事项

  • 月份范围是1-12,日期范围根据月份不同(1-31)
  • 小时范围是0-23,分钟和秒是0-59
  • 超出范围的值会引发ValueError异常
  • 日期比较:date1 < date2 表示date1在date2之前

实用小技巧

  • 获取某月的最后一天:
    from calendar import monthrange

    year, month = 2023, 2
    last_day = monthrange(year, month)[1] # 28(2023年2月)
  • 计算两个时间点相差多少分钟:
    dt1 = datetime(2023, 8, 15, 10, 0)
    dt2 = datetime(2023, 8, 15, 11, 30)

    delta = dt2 – dt1
    minutes = delta.total_seconds() / 60 # 90.0分钟

时区处理(高级)

Python 3.9+ 提供了zoneinfo模块处理时区:

from datetime import datetime
from zoneinfo import ZoneInfo

# 创建带时区的时间
dt = datetime(2023, 8, 15, 12, 0, tzinfo=ZoneInfo(“Asia/Shanghai”))

# 转换为其他时区
dt_ny = dt.astimezone(ZoneInfo(“America/New_York”))

© 2023 Python datetime模块知识点汇总 | 编程小白也能看懂的日期时间处理指南

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部