为什么废弃Date(year,month,day)方法?

Date 有多种生成方式,

如Date date =new Date(mYear,mMonth,mDay);

或者Date now =newDate();

前一种方法多好用啊,使用方便,便于理解,为什么要废弃呢?

问题是这两种方式生成的date是无法比较前后的。date.after(now)恒等于true

after方法是这样的

public boolean after(Date date) {

return milliseconds> date.milliseconds;

}

在上面return处打断点会发现 61468214400000>1510126305688。

这就奇怪了,毫秒数竟然差距这么大!

(61468214400000-1510126305688)/60/60/24/365/1000约等于1900

因为new Date(mYear,mMonth,mDay)方法中有这样一句话cal.set(1900+ year,month,day);

而new date()是根据System.currentTimeMillis()生成的。

所以,

通过new Date(mYear,mMonth,mDay)方法生成的date,

要比通过new Date()方法生成的date多了1900年的时间。

这也是为什么要废弃new Date(mYear,mMonth,mDay)的原因。

所以比较时间前后的时候,要使用同一种方法生成的date,date使用相同的构造函数。要么都通过日期生成,要么都使用毫秒生成。

现在大家知道为什么废弃Date(mYear,mMonth,mDay)方法了吗?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,273评论 19 139
  • 抄自http://javascript.ruanyifeng.com/stdlib/date.html概述Date...
    zjh111阅读 10,547评论 0 2
  • 参考基础教程的整理,方便记忆 一、Object对象 (O大写) 所有其他对象都继承自这个对象。Object本身也是...
    Viaphlyn阅读 6,953评论 0 0
  • 乱花丛中过,到最后依旧茕茕孑立,我见过花儿烂漫时候的热闹,也见过枯萎时候的凄清。我并不孤独,虽然大多数时间里我只一...
    Xie虫虫阅读 2,224评论 0 0
  • 每日复盘 Objective 你对今天学的记得什么? 提高效率,与时间赛跑。 Reflective 一句话形容今天...
    555月亮阅读 1,256评论 0 0

友情链接更多精彩内容