我想在日期中添加日期以获取Java中的新日期。如何使用Calendar
类实现它。
Calendar dom = new GregorianCalendar(d, m, y);
是我的制造日期的实例,我希望达到到期日期,在当前日期添加大约100天并将其存储在变量doe
中,但无法执行此操作。
答案 0 :(得分:10)
利用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);
如果您想要更多的灵活性和更简洁的代码,我建议JodaTime。
DateTime dom = new DateTime(y, m, d, 0, 0, 0, 0);
DateTime expire = dom.plusDays(100);
答案 1 :(得分:1)
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...
}
答案 2 :(得分:0)
现在,多年以后,旧的java.util.Date/.Calendar类被Java 8及更高版本中的新java.time包取代。
这些新类包含一个LocalDate
类,用于表示仅限日期,没有时间或时区。
LocalDate localDate = LocalDate.of( 2015 , 2 , 3 ) ;
LocalDate later = localDate.plusDays( 100 );
上面的代码适用于日期。如果您需要知道确切的到期时间,那么您需要时间和时区。在这种情况下,请使用ZonedDateTime
类。
ZoneId zone = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime zdt = later.atStartOfDay( zone ) ;