三个print优雅打印datetime模块的“时间密码”

三个模块&三条print(),玩转python时间的上上下下,优雅打印"时间密码"。


笔记模板由python脚本于2025-03-23 22:50:43创建,本篇笔记适合正确研究时间/日期的coder翻阅。


【学习的细节是欢悦的历程】

博客的核心价值:在于输出思考与经验 ,而不仅仅是知识的简单复述



自学并不是什么神秘的东西,一个人一辈子自学的时间,总是比在学校学习的时间长;没有老师的时候总是比有老师的时候多。

------ 华罗庚


---== 彰显C位 ==---

  1. ,可以在评论区++书写++任何想法
  2. (我将在看到的第一时间回应)
  3. (预置空地)

---== 彰显C位 ==---




三个模块&三条print() "时间密码" ( 玩转python时间上上下下)



本文质量分:
96 96 96
本文地址: articleUrl

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ python"时间密码"
    • 📜 脚本定位(python 源码)
    • 🎯 核心功能演示
        1. 自然日差计算
        1. 跨类型时间运算
        1. 时间魔法格式化
    • 🔥 代码亮点解析
      • 变量覆盖策略
      • 时间差黑科技
      • 负差值补偿术
    • ⚠️ 注意事项
    • 🎓 关键知识点
    • 🌟 脚本输出示例

◆ python"时间密码"

🔥 玩转datetime模块的七种武器 🔥

📜 脚本定位(python 源码)

本脚本为时间操作演示专用,通过刻意设计的变量覆盖与类型转换,展现Python时间处理的精髓。适合已掌握基础语法,想深入理解时间计算本质的学习者。

deltaday.py

python 复制代码
#!/usr/bin/env python3
from datetime import datetime, timedelta, date


'''

filename = deltaday.py

本脚本是刻意的"干嚎",东拉西扯一些"意象",为炼炼日期/时间的操控流程。😎


'''

# Base Var #
today = datetime.now().date()
yestday = (today - timedelta(days=1))
date = date(2025, 3, 20)

'''

Python底层逻辑:
datetime.date
与datetime.datetime.date
是相同对象,可以直接运算。

'''
print(
    f"\n\n今天和昨天相差:{today - yestday}天"
    f"\n今天和昨天相差:{(today - yestday).days}天"
    f"\n今天和{date}相差:{today - date}天"
    f"\n今天和{date}相差:{(date.today() - date).days}天"
        ) 

# "秒"级时间(物理时间)差计算 # 
time_tuple = 15, 36, 00
time = timedelta(seconds=sum(i*60**k for k,i in enumerate(time_tuple[::-1])))
now = datetime.now()
date = datetime(date.year, date.month, date.day)
seconds = (now - date - timedelta(seconds=sum(i*60**k for k,i in enumerate(time_tuple[::-1])))).seconds
print(
    f"\n\n{date.date()}到现在,已过{now - date}"
    f"\n{date.date()}到现在+{':'.join(map(str, time_tuple))}是:{now - date + time}"
    f"\n{date.date()}到现在+{time}是:{(now - date + time)}"
    f"\n\n{(now - date - timedelta(seconds=sum(i*60**k for k,i in enumerate(time_tuple[::-1])))).seconds = }s\n是:{seconds//60**2}:{(seconds%60**2)//60}:{seconds%60}"
    f"\n{(now - date - timedelta(seconds=sum(i*60**k for k,i in enumerate(time_tuple[::-1])))).seconds = }s\n是:{timedelta(seconds=seconds)}"
        ) 

# 如有负差值,可以补偿校正 #
seconds = 105599
time = now - timedelta(seconds=seconds)
delta = now - time
deltoday = now - date
localday = (datetime.now() - datetime.now()).days
print(
    f"\n\n现在距{timedelta(seconds=seconds)}以前:{delta.days}天"
    f"\n{today}距{date.date()}:{deltoday.days}天"
    f"\n现在距刚才:{localday + timedelta(hours=24).days if localday < 0 else localday}天"
    f"\n\n{now = }"
    f"\n简单去除"微秒":{str(now).split('.')[0] = }"
    f"\n简单去除"微秒":{str(now).split('.')[0]}"
        )

'''

我设计的这段儿简单代码示例,基本涵盖日期/时间的一般操作(运算、格式化调用/输出、对象转换)。
阅读并理解之后,对python之日期/时间工具,将会有更深的领悟。😉

'''

'''

命名"重复"!?
No! No!!
这是我故意的,被重写的变量都是已完成使命的战士,他该回营休整了,我派人接下了工作。

"书写代码时,一定明白自己在干什么"就好。😎

'''

🎯 核心功能演示

1. 自然日差计算

python 复制代码
today = datetime.now().date()  # 今日装甲车
yestday = today - timedelta(days=1)  # 昨日战车
print(f"时间差: {today - yestday}")  # 输出:1 day, 0:00:00

2. 跨类型时间运算

python 复制代码
date_obj = date(2025,3,20)  # 纯日期战士
datetime_obj = datetime(date_obj.year, date_obj.month, date_obj.day)  # 升级为时间武士
print(datetime.now() - datetime_obj)  # 自动计算物理时间差

3. 时间魔法格式化

python 复制代码
now = datetime.now()
print(f"{now}")  # 自动ISO格式:2023-10-20 15:30:45.123456
print(str(now).split('.')[0])  # 截断微秒:2023-10-20 15:30:45

🔥 代码亮点解析

变量覆盖策略

python 复制代码
date = date(2025,3,20)  # 第一形态:日期容器
date = datetime(*date_tuple)  # 第二形态:时间戳战士

武士道精神:变量完成任务即退场,新战士接管战场

时间差黑科技

python 复制代码
time = timedelta(seconds=sum(i*60**k for k,i in enumerate((15,36,0)[::-1]))
# 等价于:15*3600 + 36*60 + 0 = 57600秒

负差值补偿术

python 复制代码
localday = (datetime.now() - datetime.now()).days  # 必为0
print(localday + timedelta(hours=24).days if localday <0 else localday)  # 防御性编程

⚠️ 注意事项

  1. 变量覆盖风险

    python 复制代码
    date = date(2025,3,20)  # 初始为date类型
    date = "时间字符串"  # 覆盖后失去日期特性
  2. 时区隐身术

    本脚本默认使用本地时区,跨时区需加载zoneinfo模块:

    python 复制代码
    from zoneinfo import ZoneInfo
    datetime.now(ZoneInfo('Asia/Shanghai'))
  3. 闰秒陷阱

    系统自动处理闰秒,人工计算可能产生误差


🎓 关键知识点

  1. 类型转换表

    操作 转换方式 结果类型
    datetime→date .date() date
    date→datetime datetime.combine() datetime
    时间戳→datetime fromtimestamp() datetime
  2. 时间差秘密花园

    python 复制代码
    delta = datetime1 - datetime2
    print(delta.days)          # 完整天数
    print(delta.seconds)       # 剩余秒数(<86400)
    print(delta.total_seconds()) # 总秒数

🌟 脚本输出示例

markdown 复制代码
今天和昨天相差:1 day, 0:00:00天
2025-03-20到现在,已过-518 days, 22:24:00
现在距1 day, 5:59:59以前:1天
2023-10-20距2025-03-20:-517天
now = 2023-10-20 15:30:45.123456
简单去除"微秒":'2023-10-20 15:30:45'

⚔️ 悟透时间之道,方成代码武士!

禅语:时间如流水,代码似扁舟。智者随波动,愚者逆水游。


2025  2025  2025


上一篇:
Python功能完美的宝库------内置的强大"武器库"builtins(builtins模块包含了Python大量的内置对象(函数、异常和类型等),她是Python的内置武器库,堪称功能完美的宝库)


我的HOT博:

本次共计收集449篇博文笔记信息,总阅读量70.99w。数据采集于2025年03月17日 00:27:47,用时10分46.1秒。阅读量不小于6.00k 的有 10 10 10篇。

  1. 让QQ群昵称色变的神奇代码
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    浏览阅读:63,055
    点赞:25 收藏:90 评论:17
    (本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47)
  2. Python列表(list)反序(降序)的7种实现方式
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    浏览阅读:14,196
    点赞:9 收藏:40 评论:8
    (本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55)
  3. 个人信息提取(字符串)
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    浏览阅读:10,461
    点赞:3 收藏:21 
    (本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54)
  4. pandas 数据类型之 DataFrame
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    浏览阅读:10,358
    点赞:7 收藏:40 
    (本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)
  5. 统计字符串字符出现的次数
    地址:https://blog.csdn.net/m0_57158496/article/details/130517025
    浏览阅读:8,535
    点赞:5 收藏:27 
    (本篇笔记于2023-05-06 22:28:18首次发布,最后修改于2023-05-12 06:21:40)
  6. 罗马数字转换器|罗马数字生成器
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    浏览阅读:8,393
    收藏:3 
    (本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)
  7. Python字符串居中显示
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    浏览阅读:8,190
    点赞:1 收藏:12 评论:1
  8. 回车符、换行符和回车换行符
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    浏览阅读:6,921
    点赞:2 收藏:4 
    (本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40)
  9. python清屏
    地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    浏览阅读:6,282
    点赞:1 收藏:10
  10. 我的 Python.color() (Python 色彩打印控制)
    地址:https://blog.csdn.net/m0_57158496/article/details/123194259
    浏览阅读:6,192
    点赞:2 收藏:9 
    (本篇笔记于2022-02-28 22:46:21首次发布,最后修改于2022-03-03 10:30:03)

推荐条件 阅读量突破6.00k (更多热博,请点击蓝色文字跳转翻阅)


  • 截屏图片

      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新 发笔记被误杀而落马。躺"未过审"还不如回收站 ,回收站还不如永久不见。😪值此年底清扫,果 断移除。留此截图,以识"曾经"。2023-12-31)

2 0 2 5  2 0 2 5  2 0 2 5


精品文章:

来源: 老齐教室


Python 入门指南 【Python 3.6.3】


好文力 荐:


CSDN实用技巧博文:


相关推荐
阿阳微客1 小时前
Steam 搬砖项目深度拆解:从抵触到真香的转型之路
前端·笔记·学习·游戏
Chef_Chen6 小时前
从0开始学习R语言--Day18--分类变量关联性检验
学习
键盘敲没电6 小时前
【IOS】GCD学习
学习·ios·objective-c·xcode
海的诗篇_7 小时前
前端开发面试题总结-JavaScript篇(一)
开发语言·前端·javascript·学习·面试
AgilityBaby7 小时前
UE5 2D角色PaperZD插件动画状态机学习笔记
笔记·学习·ue5
AgilityBaby7 小时前
UE5 创建2D角色帧动画学习笔记
笔记·学习·ue5
武昌库里写JAVA8 小时前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
一弓虽9 小时前
git 学习
git·学习
Moonnnn.11 小时前
【单片机期末】串行口循环缓冲区发送
笔记·单片机·嵌入式硬件·学习
viperrrrrrrrrr712 小时前
大数据学习(131)-Hive数据分析函数总结
大数据·hive·学习