将现有日期增加1天

可能重复:
如何在Java中将日期增加一天?

我有一个现有的日期对象,我想增加一天,同时保持每个其他字段相同。 我遇到的每个例子都是小时/分钟/秒,或者您必须创建一个新的日期对象并将字段转移过来。 有没有办法可以将日期字段提前1?

谢谢

编辑:对不起,我并不是说每天增加一天的价值,我的意思是提前一天提前1

 Calendar c = Calendar.getInstance(); c.setTime(yourdate); c.add(Calendar.DATE, 1); Date newDate = c.getTime(); 

Date对象本身(假设您的意思是java.util.Date )没有Day字段 ,只有“自Unix Epoch以来的毫秒”值。 ( toString()方法根据当前语言环境打印出来。)

根据您的想法,原则上有两种方式:

  • 如果您只想“在给定日期后24小时”,您可以简单地将1000 * 60 * 60 * 24毫秒添加到时间值,然后设置它。 如果之间有夏令时间转换,则可能是您的旧日期是在11:07而新的是在10:07或12:07(取决于class次的方向),但它仍然是24小时差异。

     private final static long MILLISECONDS_PER_DAY = 1000L * 60 * 60 * 24; /** * shift the given Date by exactly 24 hours. */ public static void shiftDate(Date d) { long time = d.getTime(); time += MILLISECONDS_PER_DAY; d.setTime(time); } 
  • 如果你想“在下一个日历日同一时间”,你最好使用日历,就像MeBigFatGuy所示。 (如果您不希望使用本地时区,也许您希望将此getInstance()方法赋予TimeZone。)

     /** * Shifts the given Date to the same time at the next day. * This uses the current time zone. */ public static void shiftDate(Date d) { Calendar c = Calendar.getInstance(); c.setTime(d); c.add(Calendar.DATE, 1); d.setTime(c.getTimeInMillis()); } 

    如果您正在进行多个此类日期操作,请更好地直接使用Calendar对象,而不是一次又一次地从和转换为Date。

 org.apache.commons.lang.time.DateUtils.addDays(date, 1);