You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

datetime日期相关代码中.year属性的运行原理是什么

核心疑问解答

你的理解完全正确,datetime.date.today() 方法执行后确实会返回一个**date类的实例对象**,year 是这个实例自带的只读属性,直接访问就能获取到实例存储的年份数值。


两种写法的区别说明

你遇到的两种写法对应datetime模块下的两个不同类,逻辑分别如下:

  • datetime.date 是仅处理日期的类,实例仅存储年、月、日三个属性
    • datetime.date.today() 会返回当前日期对应的date实例,直接调用.year、.month、.day就能分别获取年、月、日数值
  • datetime.datetime 是同时处理日期和时间的类,实例除了年、月、日之外还存储时、分、秒、微秒等时间属性
    • datetime.datetime.today() 会返回当前日期时间对应的datetime实例,本身也内置了year属性,所以也可以通过.year取到年份

代码示例验证

你可以直接运行下方代码验证逻辑:

import datetime

# 测试date类逻辑
today_date = datetime.date.today()
print(type(today_date))  # 输出:<class 'datetime.date'>
print(today_date.year)   # 输出当前年份,例如2024
print(today_date.month)  # 输出当前月份
print(today_date.day)    # 输出当前日期

# 测试datetime类逻辑
today_datetime = datetime.datetime.today()
print(type(today_datetime))  # 输出:<class 'datetime.datetime'>
print(today_datetime.year)   # 同样输出当前年份
print(today_datetime.hour)   # 额外可以获取当前小时

补充说明

year、month、day 这类属性都是实例初始化时就完成赋值的只读属性,不支持直接修改,如果需要调整日期需要调用实例的replace()方法,该方法会返回一个修改后的新实例,不会改动原实例:

new_date = today_date.replace(year=2025)
print(new_date.year) # 输出2025

内容的提问来源于stack exchange,提问作者noobcoderiam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:09:03