我想在一个特定的日期上加上一天。我该怎么做呢?
Date dt = new Date();
现在我想在这个日期上加一天。
我想在一个特定的日期上加上一天。我该怎么做呢?
Date dt = new Date();
现在我想在这个日期上加一天。
当前回答
我更喜欢用joda来计算日期和时间,因为它可读性更好:
Date tomorrow = now().plusDays(1).toDate();
Or
endOfDay(now().plus(days(1))).toDate()
startOfDay(now().plus(days(1))).toDate()
其他回答
Date today = new Date();
Date tomorrow = new Date(today.getTime() + (1000 * 60 * 60 * 24));
Date有一个构造函数,使用自UNIX-epoch以来的毫秒数。getTime()-方法提供该值。所以把每一天的毫秒数加起来就可以了。如果你想定期做这样的操作,我建议为值定义常量。
重要提示:并非在所有情况下都是正确的。阅读下面的警告注释。
给定一个Date dt,你有几种可能性:
解决方案1:你可以使用Calendar类:
Date dt = new Date();
Calendar c = Calendar.getInstance();
c.setTime(dt);
c.add(Calendar.DATE, 1);
dt = c.getTime();
解决方案2:您应该认真考虑使用Joda-Time库,因为Date类存在各种缺点。使用Joda-Time你可以做以下事情:
Date dt = new Date();
DateTime dtOrg = new DateTime(dt);
DateTime dtPlusOne = dtOrg.plusDays(1);
解决方案3:在Java 8中,你还可以使用新的JSR 310 API(它的灵感来自Joda-Time):
Date dt = new Date();
LocalDateTime.from(dt.toInstant()).plusDays(1);
您可以在导入org.apache.commons.lang.time.DateUtils后使用此方法:
DateUtils.addDays(new Date(), 1);
正如在顶部的回答中提到的,自从java 8以来,它可以做到:
Date dt = new Date();
LocalDateTime.from(dt.toInstant()).plusDays(1);
但这有时会导致像这样的DateTimeException:
java.time.DateTimeException: Unable to obtain LocalDateTime from TemporalAccessor: 2014-11-29T03:20:10.800Z of type java.time.Instant
可以通过简单地传递时区来避免此异常:
LocalDateTime.from(dt.toInstant().atZone(ZoneId.of("UTC"))).plusDays(1);
这将使任何日期加1
String untildate="2011-10-08";//can take any date in current format
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Calendar cal = Calendar.getInstance();
cal.setTime( dateFormat.parse(untildate));
cal.add( Calendar.DATE, 1 );
String convertedDate=dateFormat.format(cal.getTime());
System.out.println("Date increase by one.."+convertedDate);