当前位置: 首页 > 面试题库 >

如何在Java中减去日期?

姜志行
2023-03-14
问题内容

我的心脏必须深入到减去两个日期以计算出天数后,内部开始流血:

    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日历从日期中减去X天的简单方法吗? 我还找不到任何函数可以直接从Java日期中减去X天。有人可以指出我正确的方向吗? 问题答案: 从文档中获取: 根据日历的规则,在给定的日历字段中添加或减去指定的时间量。例如,要从日历的当前时间中减去5天,可以通过调用以下方法来实现:

  • 问题内容: 我在一个包含日期/时间的网格中有一个字段,我需要知道该日期和当前日期/时间之间的区别。这样做的最佳方法是什么? 日期存储为。 问题答案: 这将为您提供两个日期之间的时差,以毫秒为单位 在您的示例中, 您需要确保这是一个有效的对象。 这样的事情可能会为您工作 即变成,这是构造函数可以理解的格式。

  • 问题内容: 我想从Java中的当前日期减去n天。 我怎么做? 问题答案: 您不必使用日历。您可以只使用时间戳记: 更新 不要忘记在1000年底之前长时间添加“ l”。 请考虑以下警告: 在java秒,夏令时等情况下,将毫秒添加到Java日期中将使原始日期增加零天或两天。如果您需要100%确定仅添加一天,则此解决方案不可用。

  • 问题内容: 我有一个对象。减去一天的最佳方法是什么? 问题答案: 你可以使用对象:

  • 我JasperReport中有这样的代码,就像< code > new simple date format(" DD/MM/yyyy ")。format(new Date())-24 * 3600 * 1000 但是它不起作用,我正在尝试从今天开始减去一天。但它是这样显示今天的