三个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实用技巧博文:


相关推荐
cliff,35 分钟前
JavaScript基础巩固之小游戏练习
javascript·笔记·学习
知识分享小能手1 小时前
CSS3学习教程,从入门到精通,CSS3 定位布局页面知识点及案例代码(18)
前端·javascript·css·学习·html·css3·html5
云上艺旅1 小时前
K8S学习之基础四十三:k8s中部署elasticsearch
学习·elasticsearch·云原生·kubernetes
齐尹秦1 小时前
HTML5 拖放(Drag and Drop)学习笔记
笔记·学习·html5
Amor风信子3 小时前
【简单学习】Prompt Engineering 提示词工程
学习·chatgpt·prompt
布伦鸽4 小时前
C# Modbus TCP/IP学习记录
开发语言·学习·c#
Jack电子实验室4 小时前
STM32实现智能温控系统(暖手宝):PID 算法 + DS18B20+OLED 显示,[学习 PID 优质项目]
stm32·学习·算法
程序员Linc4 小时前
《数字图像处理》第三章 3.8 基于模糊技术的图像强度变换与空间滤波学习笔记
笔记·学习·数字图像处理·模糊技术·强度变换·空间滤波
张张张3124 小时前
3.25学习总结 抽象类和抽象方法+接口+内部类+API
java·学习
viperrrrrrrrrr75 小时前
大数据学习(88)-zookeeper实现的高可用(HA)
大数据·学习·zookeeper