你如何減去Java中的日期?在不得不深入減去兩個日期來計算天數(shù)的跨度之后,我內(nèi)心正在流血: 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行代碼,或者您命名的任何現(xiàn)代語言。這是java的殘暴嗎?或者我應(yīng)該知道隱藏的方法嗎?而不是使用GregorianCalendar,可以在util中使用Date類嗎?如果是這樣,我應(yīng)該留意像1970年那樣微妙的事情嗎?謝謝
3 回答

慕婉清6462132
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個贊
它確實(shí)是標(biāo)準(zhǔn)Java API中最大的史詩般的失敗之一。有一點(diǎn)耐心,那么你將獲得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();
它的創(chuàng)造者斯蒂芬·科勒伯恩(Stephen Colebourne)就像JSR 310背后的那樣,所以它看起來很相似。

30秒到達(dá)戰(zhàn)場
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個贊
那么你可以刪除第三個日歷實(shí)例。
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());
添加回答
舉報
0/150
提交
取消