如何在Java中添加date

我想添加date以获得Java中的新date。 如何使用Calendar类来实现它。

 Calendar dom = new GregorianCalendar(d, m, y); 

是我的制造date的实例,我想达到date到期join当前date约100天,并将其存储在一个variablesdoe但无法做到这一点。

使用Calendar#add() 。 这是一个开球的例子。

 Calendar dom = Calendar.getInstance(); dom.clear(); dom.set(y, m, d); // Note: month is zero based! Subtract with 1 if needed. Calendar expire = (Calendar) dom.clone(); expire.add(Calendar.DATE, 100); 

如果你想要更多的灵活性和更less的代码,我推荐JodaTime 。

 DateTime dom = new DateTime(y, m, d, 0, 0, 0, 0); DateTime expire = dom.plusDays(100); 
  DateFormat formatter = null; Date convertedDate = null; formatter = new SimpleDateFormat("yyyy-MM-dd"); try { convertedDate = (Date) formatter.parse(pro.getDate().toString());//pro.getDate() is the date getting from database } catch (ParseException e) { e.printStackTrace(); } Calendar cal = Calendar.getInstance(); cal.setTime(convertedDate); cal.add(Calendar.DATE, 7); Date cvdate=cal.getTime(); if (cvdate.after(new Date())){ //do Something if you show expire... } 

java.time

现在,多年以后,旧的java.util.Date/.Calendar类被Java 8及更高版本中的新java.time包取代。

这些新类包括一个LocalDate类,用于表示仅限date,不包含时间或时区。

 LocalDate localDate = LocalDate.of( 2015 , 2 , 3 ) ; LocalDate later = localDate.plusDays( 100 ); 

上面的代码适用于date。 如果您需要知道确切的到期时间,那么您需要时间和时区。 在这种情况下,使用ZonedDateTime类。

 ZoneId zone = ZoneId.of( "America/Montreal" ) ; ZonedDateTime zdt = later.atStartOfDay( zone ) ;