0

0

Python 时间与日期处理的常见误区

舞夢輝影

舞夢輝影

发布时间:2026-01-31 18:37:02

|

407人浏览过

|

来源于php中文网

原创

datetime.now() 返回无时区信息的 naive 对象,不可靠;应显式绑定时区如 ZoneInfo("Asia/Shanghai");年份解析须用 "%Y" 避免 "%y" 的世纪推断错误;timedelta 相加不处理夏令时,应使用时区感知对象或 dateutil;time.time() 精度与稳定性受限于平台,关键场景需选用 perf_counter()、time_ns() 或 UTC 时间戳。

python 时间与日期处理的常见误区

datetime.now() 没有时区信息,不是“当前本地时间”的可靠表示

很多人调用 datetime.now() 就以为拿到了系统本地时间,其实它返回的是一个 naive datetime —— 没有 tzinfo,无法参与时区换算,也不能安全地存入数据库或跨系统传输。

真正需要本地时间时,应显式绑定时区:

  • zoneinfo.ZoneInfo(Python 3.9+):datetime.now(ZoneInfo("Asia/Shanghai"))
  • 旧版本可用 pytzdatetime.now(pytz.timezone("Asia/Shanghai"))
  • 避免用 time.localtime()datetime.fromtimestamp(time.time()),它们也返回 naive 对象,且受系统时区设置隐式影响

strftime("%Y") 和 "%y" 在跨世纪年份处理上容易出错

strftime("%y") 只输出两位年份,比如 2024 → "24",但反过来用 strptime("24", "%y") 会默认解释为 2024 年——这是由 datetime 内部的“世纪推断规则”决定的:它把 00–68 映射到 2000–2068,69–99 映射到 1969–1999。这个行为不可配置,也不透明。

实际项目中只要涉及年份输入/解析,一律用 "%Y"

立即学习Python免费学习笔记(深入)”;

  • 用户表单、API 参数、日志文件名中含年份时,强制要求四位格式
  • 读取旧数据若只有两位年份,先人工确认业务范围(比如“所有数据都在 2000–2030 之间”),再用 replace(year=...) 手动修正
  • 别依赖 datetime.strptime(..., "%y") 自动补全,它会在 2070 年突然开始解析错

timedelta 相加不处理夏令时跳变

timedelta 是纯物理时长(如 3600 秒),它和 datetime 相加时,不会考虑 DST(夏令时)切换带来的“钟表时间”偏移。例如在欧洲/Paris 时区,2024-10-27 凌晨 2:00–3:00 这一小时会重复出现(时钟回拨),此时 dt + timedelta(hours=1) 可能落到模糊时间点,且结果取决于底层 C 库实现,不可靠。

网聚购物系统
网聚购物系统

新功能:后台常用功能快捷导航 新订单提醒 新评论提醒 新注册用户提醒 后台自定义定制提醒刷新时间 不同管理员可以分别定制不同的通知 修正生成订单的时候出现sql错误! 修正商品自定义属性空格去处bug 批量转移商品 商品分类销售统计,数量统计 商品分类人气统计 升级订单系统,按日期搜索订单更快捷 订单统计功能 提高商品分类响应速度 批量打开商品开关 批量关闭商品 生成订单的时候出现sql错误! 商

下载

正确做法是用时区感知对象配合 astimezone() 或专门的时区运算库:

  • zoneinfo.ZoneInfo 创建带时区的 datetime,再用 .astimezone() 转换目标时区
  • 需做“加 N 天”类业务逻辑时,优先用 date 类型(它不涉及时区与 DST)
  • 真要处理“下周一”“本月最后一天”等语义化日期,用 dateutil.rruledateutil.relativedelta,它们内置了 DST 意识

time.time() 返回的是 Unix 时间戳,但精度和时钟源因平台而异

time.time() 看似简单,但它返回的是浮点秒数,背后依赖系统时钟(CLOCK_REALTIME)。在某些容器环境、虚拟机或老旧嵌入式设备上,该时钟可能被挂起、跳跃或漂移严重;Windows 上默认只精确到 ~15ms,Linux 通常能到微秒级但需看内核配置。

关键判断点:

  • 做性能计时?改用 time.perf_counter()(单调、高精度、不受系统时间调整影响)
  • 记录事件时间戳用于审计或排序?优先用 time.time_ns()(Python 3.7+,纳秒整数,更稳定)
  • 跨服务时间对齐?别信本地 time.time(),走 NTP 同步后的 datetime.now(ZoneInfo("UTC")) 或直接对接外部时间服务

最麻烦的不是语法写错,而是那些“看起来运行正常、但隔几年或换台机器就崩”的时间逻辑。时区、DST、纪元推断、时钟源——每个都藏在 datetime 表面之下,不动手验证根本看不出问题。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

811

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1129

2023.07.27

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

804

2023.08.01

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

454

2023.08.02

windows无法访问共享电脑
windows无法访问共享电脑

在现代社会中,共享电脑是办公室和家庭的重要组成部分。然而,有时我们可能会遇到Windows无法访问共享电脑的问题。这个问题可能会导致数据无法共享,影响工作和生活的正常进行。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2355

2023.08.08

windows自动更新
windows自动更新

Windows操作系统的自动更新功能可以确保系统及时获取最新的补丁和安全更新,以提高系统的稳定性和安全性。然而,有时候我们可能希望暂时或永久地关闭Windows的自动更新功能。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

824

2023.08.10

windows boot manager
windows boot manager

windows boot manager无法开机的解决方法:1、系统文件损坏,使用Windows安装光盘或USB启动盘进入恢复环境,选择修复计算机,然后选择自动修复;2、引导顺序错误,进入恢复环境,选择命令提示符,输入命令"bootrec /fixboot"和"bootrec /fixmbr",然后重新启动计算机;3、硬件问题,使用硬盘检测工具进行扫描和修复;4、重装操作系统。本专题还提供其他解决

1667

2023.08.28

windows锁屏快捷键
windows锁屏快捷键

windows锁屏快捷键是Windows键+L、Ctrl+Alt+Del、Windows键+D、Windows键+P和Windows键+R。本专题为大家提供windows相关的文章、下载、课程内容,供大家免费下载体验。

1640

2023.08.30

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

54

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.2万人学习

Git 教程
Git 教程

共21课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号