我想在一个特定的日期上加上一天。我该怎么做呢?

Date dt = new Date();

现在我想在这个日期上加一天。


当前回答

你想在几天后找到日期这个代码尝试..

public Date getToDateAfterDays(Integer day) {
        Date nowdate = new Date();
        Calendar cal = Calendar.getInstance();
        cal.setTime(nowdate);
        cal.add(Calendar.DATE, day);
        return cal.getTime();
    }

其他回答

我将向您展示如何在Java 8中做到这一点。给你:

public class DemoDate {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        System.out.println("Current date: " + today);

        //add 1 day to the current date
        LocalDate date1Day = today.plus(1, ChronoUnit.DAYS);
        System.out.println("Date After 1 day : " + date1Day);
    }
}

输出:

Current date: 2016-08-15
Date After 1 day : 2016-08-16
Date today = new Date();
Date tomorrow = new Date(today.getTime() + (1000 * 60 * 60 * 24));

Date有一个构造函数,使用自UNIX-epoch以来的毫秒数。getTime()-方法提供该值。所以把每一天的毫秒数加起来就可以了。如果你想定期做这样的操作,我建议为值定义常量。

重要提示:并非在所有情况下都是正确的。阅读下面的警告注释。

我更喜欢用joda来计算日期和时间,因为它可读性更好:

Date tomorrow = now().plusDays(1).toDate();

Or

endOfDay(now().plus(days(1))).toDate()
startOfDay(now().plus(days(1))).toDate()

Java 8 LocalDate API

LocalDate.now().plusDays(1L);

为了使它与java无关,基本原则是转换为某种线性日期格式,儒略日、修改的儒略日、从某个纪元开始的秒等,添加您的日期,然后转换回来。

这样做的原因是,您可以将“正确处理闰日、闰秒等”的问题外包给那些运气好的人,他们没有把这个问题搞砸。

我要提醒您,正确使用这些转换例程可能很困难。人们搞砸时间的方式多得惊人,最近一个高调的例子是微软的Zune。不要取笑MS,因为它很容易搞砸。即使有多种不同的时间格式,比如TAI和TT,也无济于事。