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

发布于:2025-03-25 ⋅ 阅读:(30) ⋅ 点赞:(0)

三个模块&三条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. 自然日差计算
      • 2. 跨类型时间运算
      • 3. 时间魔法格式化
    • 🔥 代码亮点解析
      • 变量覆盖策略
      • 时间差黑科技
      • 负差值补偿术
    • ⚠️ 注意事项
    • 🎓 关键知识点
    • 🌟 脚本输出示例


◆ python“时间密码”


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

📜 脚本定位(python 源码)

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


deltaday.py

#!/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. 自然日差计算

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

2. 跨类型时间运算

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

3. 时间魔法格式化

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

🔥 代码亮点解析

变量覆盖策略

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

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

时间差黑科技

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

负差值补偿术

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

⚠️ 注意事项

  1. 变量覆盖风险

    date = date(2025,3,20)  # 初始为date类型
    date = "时间字符串"  # 覆盖后失去日期特性
    
  2. 时区隐身术
    本脚本默认使用本地时区,跨时区需加载zoneinfo模块:

    from zoneinfo import ZoneInfo
    datetime.now(ZoneInfo('Asia/Shanghai'))
    
  3. 闰秒陷阱
    系统自动处理闰秒,人工计算可能产生误差


🎓 关键知识点

  1. 类型转换表

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

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

🌟 脚本输出示例


今天和昨天相差: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实用技巧博文: