在Java编程中,日期与时间的处理是高频需求,从记录操作日志到实现定时任务,都离不开对时间的精准把控,而Date类和Calendar类则是Java中处理日期时间的两大核心工具,二者各司其职,共同构建了Java早期的日期时间处理体系。
Date类是java.util包下的基础时间类,它以长整型的时间戳(从1970年1月1日00:00:00 GMT开始的毫秒数)表示特定的瞬间。创建Date实例时,无参构造方法 new Date() 会获取当前系统时间,也可通过传入毫秒数创建指定时间的Date对象。不过Date类的多数方法(如 getYear() 、 getMonth() )已被标记为过时,原因是这些方法存在时区处理不灵活、月份从0开始计数等设计缺陷,仅保留了 getTime() (获取时间戳)、 toString() (转换为字符串)等少数常用方法。
为了弥补Date类的不足,Calendar类应运而生。作为抽象类,Calendar无法直接实例化,需通过 Calendar.getInstance() 获取默认时区的GregorianCalendar实例。它提供了丰富的方法操作日期时间字段,比如 get(Calendar.YEAR) 获取年份、 set(Calendar.MONTH, Calendar.JULY) 设置月份、 add(Calendar.DAY_OF_MONTH, 7) 实现日期的增减,完美解决了Date类无法便捷调整日期的问题。同时,Calendar类支持时区设置,可通过 setTimeZone() 方法切换不同时区的时间,满足国际化程序的开发需求。
在实际应用中,Date类常与Calendar类配合使用:先用Calendar类完成日期的计算和调整,再通过 getTime() 方法将Calendar对象转换为Date对象,用于时间的存储和传输。不过需要注意,Calendar类的月份同样从0开始,且周日是一周的第一天,开发时需避免因字段计数规则导致的错误。尽管Java 8之后推出了更优秀的java.time包,但Date类和Calendar类作为经典的时间处理工具,仍在老项目中被广泛使用,是Java开发者必须掌握的基础知识点。
Date类与Calendar类——Java日期时间处理的双核心
张小明
前端开发工程师
Java常用工具类的学习逻辑与实践技巧
学习Java常用工具类是从基础语法走向实际开发的关键一步,第10章中的Scanner、Date/Calendar、Math类虽功能各异,但遵循着统一的学习逻辑,掌握这些逻辑和实践技巧,能让工具类的使用更加得心应手。从学习逻辑来看,首先要…
滑窗+hash|pii dfs
lc2423 // try -- every char 一个变量控制不明白 那就再加一个变量🤓👆🏻 cnt; // restore class Solution { public: bool equalFrequency(string word) { unordered_map<char,int> hash; for(auto& c:word) hash[c]; // try -…
AI核心知识56——大语言模型之ToT(简洁且通俗易懂版)
Tree of Thoughts (ToT / 思维树) 是提示工程(Prompt Engineering)中一种高级且强悍的推理框架。如果说 Chain of Thought (CoT / 思维链) 是让 AI “一条路走到黑” 地线性思考,那么 ToT 就是让 AI 学会像人类大师一样“深思熟虑、多步推演、…
35岁大龄程序员突破中年危机魔咒:职业转型与个人成长的实用指南!
“中年危机”对于我们当代人来说,是令我们每个人都惶恐不安的四个字,但我们又不得不面对它。对于我们程序员来说尤为明显,就像一个魔咒一样挥之不去。 一、中年危机魔咒 IT行业一直是内卷严重的行业,度过中年危机对我们大多数程…
《金赐:大航海的肮脏秘密》
《金赐:大航海的肮脏秘密》 第一章:被诅咒的货仓 1502年,里斯本,贝伦塔下的阴影里。 费尔南多德索萨是个赌徒。他赌输了祖产,赌输了爵位,现在他要把最后一条命押在“圣安东尼奥号”上。这艘载重200吨的卡拉…
量子 Agent 如何实现毫秒级优化?:深入解析5大核心算法突破
第一章:量子 Agent 的毫秒级优化挑战在当前高并发、低延迟的分布式系统中,量子 Agent 面临着前所未有的性能压力。其核心任务是在毫秒级响应时间内完成复杂的状态评估与策略推导,这对底层计算架构和算法效率提出了极致要求。实时性瓶颈的根源…