在Java中添加日期到日期

har*_*ad 74 java date

如何在Java中添加x天到日期?

例如,我的日期是(年/月/日)= 01/01/2012

添加5天,输出应该是06/01/2012.

swe*_*mon 99

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar c = Calendar.getInstance();
c.setTime(new Date()); // Now use today date.
c.add(Calendar.DATE, 5); // Adding 5 days
String output = sdf.format(c.getTime());
System.out.println(output);
Run Code Online (Sandbox Code Playgroud)

  • 为什么setTime为new Date(),但Calendar.getInstance().getTime()产生相同的效果? (12认同)

Mat*_*aun 45

java.time

使用Java 8 Date和Time API,您可以使用LocalDate该类.

LocalDate.now().plusDays(nrOfDays)
Run Code Online (Sandbox Code Playgroud)

请参阅Oracle教程.

  • 正确答案.我还建议将时区([`ZoneId`](http://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html))传递给[`now`]( http://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#now-java.time.ZoneId-)方法而不是隐式依赖于JVM的[当前默认时区]( http://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html#systemDefault--).在运行时*期间,该默认值可随时更改*!最好指定所需/预期的时区. (2认同)

Pet*_*sik 20

Calendar cal = Calendar.getInstance();    
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.MONTH, 1);
cal.set(Calendar.YEAR, 2012);
cal.add(Calendar.DAY_OF_MONTH, 5);
Run Code Online (Sandbox Code Playgroud)

你也可以减去天数 Calendar.add(Calendar.DAY_OF_MONTH, -5);


小智 18

这是一些简单的代码,将输出作为currentdate+ D days= some 'x' date(未来日期):

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");

Calendar c = Calendar.getInstance();    
c.add(Calendar.DATE, 5);
System.out.println(dateFormat.format(c.getTime()));
Run Code Online (Sandbox Code Playgroud)


Bri*_*new 12

如果你正在使用Joda-Time(并且有很多很好的理由 - 一个简单,直观的API和线程安全性)那么你可以做到这一点:

(new LocalDate()).plusDays(5);
Run Code Online (Sandbox Code Playgroud)

例如,从今天起5天.

  • 查看 Joda 特定的 DateTimeFormatters (2认同)

小智 9

简单,没有任何其他API:

要添加8天:

Date today=new Date();
long ltime=today.getTime()+8*24*60*60*1000;
Date today8=new Date(ltime);
Run Code Online (Sandbox Code Playgroud)

  • 此代码并未考虑到天数并非始终为24小时的事实.从技术上讲,这增加了192小时而不是8天.根据情况定义为"天",可能是正确的. (6认同)
  • 使用这样的代码的问题是,您可以轻松地溢出 int,然后变为负值: 90 days * 24*60*60*1000 = (int) -813934592 这会让您_倒退_。 (3认同)
  • 不是这样实现的方法,我使用了这段代码,当我添加 29 + 7 时,它达到了 36,其中日期不超过 31 天...... (2认同)