为了账号安全,请及时绑定邮箱和手机立即绑定

你如何减去Java中的日期?

你如何减去Java中的日期?

湖上湖 2019-08-28 10:26:23
你如何减去Java中的日期?在不得不深入减去两个日期来计算天数的跨度之后,我内心正在流血:    GregorianCalendar c1 = new GregorianCalendar();     GregorianCalendar c2 = new GregorianCalendar();     c1.set(2000, 1, 1);     c2.set(2010,1, 1);     long span = c2.getTimeInMillis() - c1.getTimeInMillis();     GregorianCalendar c3 = new GregorianCalendar();     c3.setTimeInMillis(span);     long numberOfMSInADay = 1000*60*60*24;     System.out.println(c3.getTimeInMillis() / numberOfMSInADay); //3653在.NET中只有2行代码,或者您命名的任何现代语言。这是java的残暴吗?或者我应该知道隐藏的方法吗?而不是使用GregorianCalendar,可以在util中使用Date类吗?如果是这样,我应该留意像1970年那样微妙的事情吗?谢谢
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

它确实是标准Java API中最大的史诗般的失败之一。有一点耐心,那么你将获得JSR 310 / ThreeTen指定的新日期和时间API的解决方案,它很可能会包含在即将推出的Java 8中。


在那之前,你可以逃脱JodaTime。


DateTime dt1 = new DateTime(2000, 1, 1, 0, 0, 0, 0);

DateTime dt2 = new DateTime(2010, 1, 1, 0, 0, 0, 0);

int days = Days.daysBetween(dt1, dt2).getDays();

它的创造者斯蒂芬·科勒伯恩(Stephen Colebourne)就像JSR 310背后的那样,所以它看起来很相似。


查看完整回答
反对 回复 2019-08-28
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

那么你可以删除第三个日历实例。

GregorianCalendar c1 = new GregorianCalendar();GregorianCalendar c2 = new GregorianCalendar();c1.set(2000, 1, 1);c2.set(2010,1, 1);c2.add(GregorianCalendar.MILLISECOND, -1 * c1.getTimeInMillis());


查看完整回答
反对 回复 2019-08-28
  • 3 回答
  • 0 关注
  • 358 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信