日期和时间
掌握
time和datetime两大时间模块的适用场景能熟练进行时间戳、结构化时间、格式化字符串的相互转换
实现时间差计算、倒计时、时区处理等常见业务场景
核心讲解
Python 处理时间有两大核心模块:time 偏底层系统调用,适合时间戳、休眠等场景;datetime 偏面向对象,适合日期计算、格式化等业务场景。
(1)时间的三种表示形式
时间戳(timestamp):从 1970 年 1 月 1 日 0 点到现在的秒数,浮点数,适合计算和存储
结构化时间(struct_time):9 个字段的元组,包含年、月、日、时、分、秒等,
time模块的中间格式格式化字符串:人类可读的文本格式,比如
2026-09-15 14:30:00,用于展示
(2)time 模块
time.time():获取当前时间戳time.sleep(秒数):暂停程序执行time.localtime():时间戳转本地结构化时间time.strftime():结构化时间转格式化字符串time.strptime():字符串转结构化时间
(3)datetime 模块(推荐)
面向对象的时间处理库,是业务开发的首选,包含四个核心类:
datetime.datetime:日期 + 时间datetime.date:仅日期datetime.timedelta:时间差,用于时间加减datetime.timezone:时区
核心操作:
获取当前时间:
datetime.now()格式化输出:
strftime(格式符)字符串转时间:
datetime.strptime(字符串, 格式)时间计算:直接加减
timedelta时间差:两个 datetime 对象相减得到 timedelta
(4)常用格式符
%Y:四位年、%m:两位月、%d:两位日%H:24 小时制、%M:分、%S:秒%Y-%m-%d %H:%M:%S是最常用的标准格式
代码示例
import time
from datetime import datetime, timedelta, timezone
# ===== time模块 =====
# 时间戳
timestamp = time.time()
print("当前时间戳:", timestamp)
# 休眠2秒
print("等待2秒...")
time.sleep(2)
# 格式化时间
local_time = time.localtime()
print(time.strftime("%Y-%m-%d %H:%M:%S", local_time))
# ===== datetime模块(推荐) =====
# 获取当前时间
now = datetime.now()
print("当前时间:", now)
print("年:", now.year, "月:", now.month, "日:", now.day)
# 格式化输出
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化:", formatted)
# 字符串转datetime
date_str = "2026-09-15 14:30:00"
dt = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print("解析后的时间:", dt)
# 时间计算
# 7天后
after_7days = now + timedelta(days=7)
print("7天后:", after_7days.strftime("%Y-%m-%d"))
# 3小时前
before_3h = now - timedelta(hours=3)
print("3小时前:", before_3h.strftime("%H:%M:%S"))
# 时间差计算
birthday = datetime(2026, 12, 1)
delta = birthday - now
print(f"距离生日还有 {delta.days} 天")
# 时间戳互转
# datetime转时间戳
ts = now.timestamp()
print("datetime转时间戳:", ts)
# 时间戳转datetime
dt2 = datetime.fromtimestamp(ts)
print("时间戳转datetime:", dt2)
# 时区处理(UTC+8北京时间)
bj_tz = timezone(timedelta(hours=8))
utc_now = datetime.utcnow().replace(tzinfo=timezone.utc)
bj_now = utc_now.astimezone(bj_tz)
print("北京时间:", bj_now.strftime("%Y-%m-%d %H:%M:%S"))
常见误区
时间戳单位混淆:Python 时间戳是秒级,其他语言很多是毫秒级,对接时注意除以 1000
strftime 和 strptime 记混:f 是 format(格式化成字符串),p 是 parse(解析成时间)
时区问题:
datetime.now()默认是本地时区,跨时区业务一定要显式指定时区格式化符号写错:
%m是月,%M是分;大小写含义完全不同,很容易出错
课后练习
编写程序,输出当前时间,格式为
YYYY年MM月DD日 HH时MM分SS秒编写程序,让用户输入生日(格式 YYYY-MM-DD),计算已经活了多少天
实现一个倒计时功能,输入分钟数,每秒显示剩余时间,结束提示
计算 2026 年国庆节是星期几

