当前位置: 首页 > article >正文

09-扩展知识——05. date 类 - 处理日期

05. date 类 - 处理日期概述date类是 datetime 模块中专门处理日期年、月、日的类不包含时间和时区信息。它是日常日期操作中最常用的类之一。维度内容What处理日期年、月、日的类Why专门处理日历日期不关心具体时间When生日、节假日、日期范围、日历计算Wherefrom datetime import dateWho需要处理日期而非时间的开发者Howd date(2026, 4, 19)1. date 类基础1.1 创建 date 对象fromdatetimeimportdateimporttime# 方式1直接指定年月日d1date(2026,4,19)print(d1)# 2026-04-19# 方式2获取当前日期todaydate.today()print(today)# 2026-04-19# 方式3从时间戳创建timestamptime.time()d2date.fromtimestamp(timestamp)print(d2)# 2026-04-19# 方式4从 ISO 格式字符串创建Python 3.7d3date.fromisoformat(2026-04-19)print(d3)# 2026-04-19# 方式5从序数创建公元1年1月1日为1d4date.fromordinal(738264)print(d4)# 2026-04-191.2 最小和最大日期fromdatetimeimportdate# 最小日期year1, month1, day1min_datedate.minprint(f最小日期:{min_date})# 0001-01-01# 最大日期year9999, month12, day31max_datedate.maxprint(f最大日期:{max_date})# 9999-12-31# 最小时间间隔resolutiondate.resolutionprint(f分辨率:{resolution})# 1 day, 0:00:002. date 属性fromdatetimeimportdate ddate(2026,4,19)print(f年份:{d.year})# 2026print(f月份:{d.month})# 4print(f日期:{d.day})# 193. date 实例方法3.1 replace() - 替换部分字段fromdatetimeimportdate ddate(2026,4,19)# 替换年份print(d.replace(year2027))# 2027-04-19# 替换月份print(d.replace(month12))# 2026-12-19# 替换日期print(d.replace(day1))# 2026-04-01# 同时替换多个print(d.replace(year2025,month5,day10))# 2025-05-103.2 timetuple() - 转换为时间元组fromdatetimeimportdate ddate(2026,4,19)td.timetuple()print(f时间元组:{t})# time.struct_time(tm_year2026, tm_mon4, tm_mday19, tm_hour0, tm_min0, tm_sec0, tm_wday6, tm_yday109, tm_isdst-1)print(f年:{t.tm_year})print(f月:{t.tm_mon})print(f日:{t.tm_mday})print(f星期0周一:{t.tm_wday})print(f年中的第几天:{t.tm_yday})3.3 toordinal() - 转换为序数fromdatetimeimportdate ddate(2026,4,19)ordinald.toordinal()print(f序数:{ordinal})# 从公元1年1月1日开始的天数# 从序数恢复d2date.fromordinal(ordinal)print(f恢复:{d2})# 2026-04-193.4 weekday() 和 isoweekday() - 获取星期fromdatetimeimportdate ddate(2026,4,19)# 周日# weekday(): 周一0, 周日6print(fweekday():{d.weekday()})# 6# isoweekday(): 周一1, 周日7print(fisoweekday():{d.isoweekday()})# 7# 获取星期名称weekdays[周一,周二,周三,周四,周五,周六,周日]print(f星期:{weekdays[d.weekday()]})3.5 isoformat() - ISO 格式字符串fromdatetimeimportdate ddate(2026,4,19)print(d.isoformat())# 2026-04-193.6 ctime() - C 语言格式字符串fromdatetimeimportdate ddate(2026,4,19)print(d.ctime())# Sun Apr 19 00:00:00 20263.7 strftime() - 自定义格式化fromdatetimeimportdate ddate(2026,4,19)print(d.strftime(%Y年%m月%d日))# 2026年04月19日print(d.strftime(%Y-%m-%d))# 2026-04-19print(d.strftime(%Y/%m/%d))# 2026/04/19print(d.strftime(%d-%m-%Y))# 19-04-2026print(d.strftime(%b %d, %Y))# Apr 19, 2026print(d.strftime(%A))# Sunday4. date 类方法4.1 today() - 获取当前日期fromdatetimeimportdate todaydate.today()print(f今天:{today})4.2 fromtimestamp() - 从时间戳创建fromdatetimeimportdateimporttime timestamptime.time()ddate.fromtimestamp(timestamp)print(d)4.3 fromisoformat() - 从 ISO 字符串创建fromdatetimeimportdate ddate.fromisoformat(2026-04-19)print(d)# 2026-04-194.4 fromordinal() - 从序数创建fromdatetimeimportdate# 公元1年1月1日是第1天ddate.fromordinal(1)print(d)# 0001-01-015. date 运算5.1 日期加减fromdatetimeimportdate,timedelta todaydate(2026,4,19)# 加法tomorrowtodaytimedelta(days1)yesterdaytoday-timedelta(days1)next_weektodaytimedelta(weeks1)last_monthtoday-timedelta(days30)print(f今天:{today})print(f明天:{tomorrow})print(f昨天:{yesterday})print(f下周:{next_week})print(f30天前:{last_month})5.2 日期差值fromdatetimeimportdate startdate(2026,1,1)enddate(2026,12,31)diffend-startprint(f天数差:{diff.days})# 3645.3 日期比较fromdatetimeimportdate d1date(2026,4,19)d2date(2026,4,20)d3date(2026,4,19)print(fd1 d2:{d1d2})# Trueprint(fd1 d2:{d1d2})# Falseprint(fd1 d3:{d1d3})# True6. 实用示例6.1 判断闰年fromdatetimeimportdatedefis_leap_year(year):判断是否为闰年returnyear%40and(year%100!0oryear%4000)# 测试years[2024,2025,2026,2100,2400]foryinyears:print(f{y}年是闰年:{is_leap_year(y)})6.2 获取月份天数fromdatetimeimportdatefromcalendarimportmonthrangedefget_month_days(year,month):获取月份的天数returnmonthrange(year,month)[1]print(f2026年4月有{get_month_days(2026,4)}天)6.3 日期范围遍历fromdatetimeimportdate,timedelta startdate(2026,4,1)enddate(2026,4,7)currentstartwhilecurrentend:print(current.strftime(%Y-%m-%d %A))currenttimedelta(days1)6.4 计算两个日期之间的天数fromdatetimeimportdatedefdays_between(d1,d2):计算两个日期之间的天数绝对值returnabs((d2-d1).days)startdate(2026,1,1)enddate(2026,12,31)print(f2026年天数:{days_between(start,end)})# 3646.5 获取本月第一天和最后一天fromdatetimeimportdatefromcalendarimportmonthrangedefget_month_first_last(year,month):获取月份的第一天和最后一天first_daydate(year,month,1)last_daydate(year,month,monthrange(year,month)[1])returnfirst_day,last_day first,lastget_month_first_last(2026,4)print(f4月第一天:{first})print(f4月最后一天:{last})6.6 计算年龄fromdatetimeimportdatedefcalculate_age(birth_date):计算年龄todaydate.today()agetoday.year-birth_date.year# 如果今年生日还没过减1if(today.month,today.day)(birth_date.month,birth_date.day):age-1returnage birthdate(1990,5,15)print(f年龄:{calculate_age(birth)})7. 完整示例fromdatetimeimportdate,timedeltaprint(*50)print(date 类综合示例)print(*50)# 1. 创建日期对象print(\n1. 创建日期对象)d1date(2026,4,19)d2date.today()print(f指定日期:{d1})print(f当前日期:{d2})# 2. 日期信息print(\n2. 日期信息)print(f年份:{d1.year})print(f月份:{d1.month})print(f日期:{d1.day})print(f星期:{d1.strftime(%A)})print(f年中第{d1.timetuple().tm_yday}天)# 3. 日期运算print(\n3. 日期运算)todaydate.today()tomorrowtodaytimedelta(days1)yesterdaytoday-timedelta(days1)next_weektodaytimedelta(weeks1)print(f今天:{today})print(f明天:{tomorrow})print(f昨天:{yesterday})print(f下周:{next_week})# 4. 日期格式化print(\n4. 日期格式化)print(fISO格式:{today.isoformat()})print(f中文格式:{today.strftime(%Y年%m月%d日)})print(f英文格式:{today.strftime(%b %d, %Y)})# 5. 日期比较print(\n5. 日期比较)d1date(2026,4,19)d2date(2026,5,1)print(f{d1}{d2}:{d1d2})print(f{d1}{d2}:{d1d2})print(f相差天数:{(d2-d1).days}天)# 6. 实用功能print(\n6. 实用功能)birthdate(1990,4,19)agecalculate_age(birth)print(f生日:{birth})print(f年龄:{age}岁)# 判断是否闰年year2024print(f{year}年是闰年:{year%40and(year%100!0oryear%4000)})8. 常见陷阱陷阱说明解决方案无效日期date(2026, 2, 29)会报错使用monthrange检查月份范围月份必须是 1-12验证输入日期范围日期必须在有效范围内验证输入时区忽略date 不包含时区信息使用 datetime 处理时区9. 总结方法/属性用途date(year, month, day)创建日期对象date.today()获取当前日期year,month,day获取年月日weekday()获取星期0周一isoweekday()获取星期1周一replace()替换部分字段strftime()格式化输出/- timedelta日期加减date1 - date2日期差值

相关文章:

09-扩展知识——05. date 类 - 处理日期

05. date 类 - 处理日期 概述 date 类是 datetime 模块中专门处理日期(年、月、日)的类,不包含时间和时区信息。它是日常日期操作中最常用的类之一。维度内容What处理日期(年、月、日)的类Why专门处理日历日期&#xf…...

React聊天机器人组件集成指南:从UI定制到AI后端连接

1. 项目概述与核心价值最近在折腾一个基于React的前端聊天机器人项目,核心想法是把类似ChatGPT的对话交互体验,无缝集成到自己的Web应用里。这个需求其实挺普遍的,无论是做客服助手、智能问答面板,还是想给自己的产品加个AI对话的…...

STM32F103 学习笔记-21-串口通信(第5节)—串口2345代码移植和讲解

本章基于 STM32F103 标准外设库开发,从最基础的“串口是什么”讲起,通过生活化类比拆解硬件原理,配合逐行注释的可运行代码,让零基础读者读完就能实现单片机与电脑的双向通信。一、什么是串口通信?1.1 串口的本质&…...

保姆级 Kali Linux 安装教程|零基础小白也能看懂,从镜像下载到虚拟机配置全程图文详解,零报错上手

kali 背景 基于Debian的Linux操作系统 Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。最先由Offensive Security的Mati Aharoni和Devon Kearns通过重写BackTrack来完成,Back…...

LLMCompiler:大语言模型并行函数调用编译器原理与实践

1. 项目概述:一个为LLM设计的“并行函数调用编译器”如果你正在构建基于大语言模型(LLM)的智能体应用,并且被工具调用(Function Calling)的串行延迟和高昂成本所困扰,那么LLMCompiler这个项目值…...

2026 年了,国产大模型和 GPT/Claude的差距还有多大?

作为一名每天要在终端、代码库和几十个 API 接口里反复横跳的开发者,我在这几年见证了 AI 行业最疯狂的三年。记得 2023 年大家还在笑话国产大模型只会“套壳”,2024 年开始被 DeepSeek 的性价比震撼,而到了 2026 年的今天,坐在电…...

通用人工智能系统(GPAIS)的技术挑战与可信AI治理框架

1. GPAIS:从概念到现实,我们离“通用”还有多远?如果你关注AI领域,最近几年一定被各种“全能”模型刷过屏。从能写代码、画图、聊天的ChatGPT,到能处理多模态信息的GPT-4V,再到各种宣称能“理解世界”的智能…...

容器是怎么管理 Bean 的?

文章目录1. 核心蓝图:BeanDefinition2. 核心管理流程:生命周期流水线第一阶段:准备与实例化第二阶段:装配与填充第三阶段:初始化(Initialization)第四阶段:生存与销毁3. 核心机制&am…...

医学影像分割:2D超图像与3D网络性能对比与选型指南

1. 项目概述:从“切片”到“体素”的认知跃迁在医学影像分析领域,分割任务一直是核心中的核心。无论是肿瘤的勾画、器官的量化,还是病灶的追踪,精准的分割都是后续诊断、治疗规划和疗效评估的基石。长久以来,处理三维医…...

Bean 会被 JVM 回收吗?

文章目录核心结论:**会,但前提是它必须变得“不可达”。**1. Singleton Bean(单例):通常与容器同生死2. Prototype Bean(多例):管生不管死3. 决定 Bean 被回收的具体条件总结对照表核…...

Bean 什么时候会被销毁?

文章目录 1. 核心触发时机:容器关闭2. 不同作用域(Scope)的差异3. 销毁逻辑的具体执行顺序 Bean 的销毁时机主要取决于它的 作用域(Scope) 以及 容器(ApplicationContext)的状态。 在 Spring 中…...

航空发动机齿轮有限元可靠性分析与齿廓修形优化【附仿真】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)多保真度主动学习代理模型与模型修正: …...

CANN/hcomm通信域初始化

HcclCommInitRootInfo 【免费下载链接】hcomm HCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 产品支持情况 Ascend 950PR/Ascend 950DT:…...

OBS虚拟摄像头插件:4个虚拟摄像头同时工作的终极指南

OBS虚拟摄像头插件:4个虚拟摄像头同时工作的终极指南 【免费下载链接】obs-virtual-cam 项目地址: https://gitcode.com/gh_mirrors/obsv/obs-virtual-cam 还在为OBS直播画面只能分享到一个应用而烦恼吗?今天我要介绍的obs-virtual-cam插件&…...

ThinkPad风扇控制革命:如何用TPFanCtrl2告别过热与噪音困扰

ThinkPad风扇控制革命:如何用TPFanCtrl2告别过热与噪音困扰 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 在ThinkPad用户群体中,风扇控制一直…...

深度解析 MCP (Model Context Protocol):构建 AI Agent 的核心纽带

深度解析 MCP (Model Context Protocol):构建 AI Agent 的核心纽带 摘要 在当前大模型(LLM)向智能体(Agent)演进的过程中,如何打破“信息孤岛”,实现模型与外部工具、数据库及本地文件系统的标准…...

收藏必看!2026年AI内卷混战风口拆解,小白也能轻松入局大模型

2026年刷各大平台,相信不少程序员和零基础小伙伴都被AI圈内卷刷屏!既能自主决策、智能交互的人形机器人遍地开花,还有全网爆火、玩法持续迭代升级的AI小龙虾OpenClaw强势出圈。当下大模型技术更新迭代速度极快,用日新月异来形容行…...

收藏!2026年转AI大模型应用开发,正确学习顺序别踩坑(小白/程序员必看)

本文深度剖析2026年AI智能体公司的生存困境,点出其商业模式局限、缺乏行业深耕经验的核心痛点,揭示其难以持续盈利的底层逻辑。同时,结合当下AI大模型的爆发式发展趋势,强调大模型应用开发的学习价值,为小白、程序员整…...

【2026最新版|收藏备用】用Skill简化大模型知识库连接,小白程序员入门必看

本文专为2026年入门大模型的小白、程序员打造,详细介绍如何通过Skill技术简化大模型与外部知识库的对接流程,对比传统RAG方法的繁琐痛点,手把手讲解Markdown(.md)格式文档的存储技巧、SKILL.md文件的技能描述与导航方法…...

VMware Unlocker 3.0:专业解锁工具让PC轻松运行macOS虚拟机的高效指南

VMware Unlocker 3.0:专业解锁工具让PC轻松运行macOS虚拟机的高效指南 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 在Windows或Linux系统上运行macOS虚拟机,对于iOS应用开发者…...

GitHub中文界面终极指南:3步免费快速安装,告别英文困扰

GitHub中文界面终极指南:3步免费快速安装,告别英文困扰 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 还在为…...

基于Kubernetes的AI应用控制平面:kiro-acp架构解析与实践指南

1. 项目概述:一个面向AI应用开发的集成控制平面最近在GitHub上闲逛时,发现了一个名为kiro-acp的项目,隶属于haliphax-ai这个组织。光看名字,acp很容易让人联想到“应用控制平面”。点进去一看,果然,这是一个…...

微信小程序集成ChatGPT:架构设计与工程实践全解析

1. 项目概述:一个在微信小程序里跑起来的ChatGPT最近在捣鼓微信小程序,想看看能不能把ChatGPT这种大模型的能力塞进去。毕竟,现在AI对话这么火,如果能在小程序里直接调用,做个智能客服、个人助手或者创意工具&#xff…...

本地部署AI助手Catai:基于Llama.cpp的模型管理与服务集成指南

1. 项目概述:在本地运行你自己的AI助手 如果你和我一样,对大型语言模型(LLM)充满好奇,既想体验它们强大的对话和推理能力,又对数据隐私、网络依赖或API调用成本有所顾虑,那么本地部署一个AI模型…...

通用人工智能系统GPAIS:从专用AI到通用智能体的架构与实战

1. 项目概述:从“专用”到“通用”的AI范式跃迁最近几年,AI领域的热点几乎被大语言模型(LLM)和扩散模型(AIGC)所垄断。我们见证了它们在文本生成、代码编写、图像创作等特定任务上展现出的惊人能力。然而&a…...

2026 AI大会报名通道即将关闭:3大未公开优先注册通道+5类免审资格今日解锁

更多请点击: https://intelliparadigm.com 第一章:2026年AI技术大会报名截止时间 2026年AI技术大会(AI Tech Summit 2026)官方报名通道将于北京时间2026年3月15日23:59准时关闭,逾期系统将自动终止注册流程。本次大会…...

CANN/ops-math 3D反射填充算子

aclnnReflectionPad3d 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math 📄 查看源码 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas …...

CANN/runtime CMO缓存操作

11-06 CMO 缓存操作 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 本章节描述 CMO(Cache Maintenance Operations)缓存操作接口,用于缓存刷新与失效操作。 aclErr…...

Context Harness:本地优先AI知识库引擎,无缝集成Cursor与Claude

1. 项目概述:一个为AI工具打造的本地优先知识库引擎如果你和我一样,日常重度依赖像Cursor、Claude Code这类AI编程助手,那你肯定也遇到过这个痛点:当你想让AI帮你分析一个复杂的私有代码库、查阅公司内部的API文档,或者…...

构建安全多语言代码沙盒:从原理到实践

1. 项目概述:从“Can I Code?”到“Can I Code!”“let-sunny/canicode”这个项目名,初看有点意思。它不像一个传统的工具库或框架,名字里带着一个问句的意味——“我能编码吗?”。这恰恰是很多初学者,甚至是在特定领…...