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
相关产品推荐
相关产品推荐

