如何在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或你命名的任何现代语言中只有两行代码。

这对Java不好吗?还是我应该知道一个隐藏的方法?

可以在util中使用Date类而不使用GregorianCalendar吗?如果是这样,我是否应该提防像1970年这样的细微事情?

谢谢

回答:

这确实是标准Java API中最大的史诗失败之一。有一点耐心,那么你将获得JSR 310 / ThreeTen指定的新Date and Time 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背后的家伙,所以看起来很相似。

以上是 如何在Java中减去日期? 的全部内容, 来源链接: utcz.com/qa/401844.html

回到顶部