如何在 Java 中为日期添加天数

问题描述 投票:0回答:3

我想在日期中添加天数以获取 Java 中的新日期。如何使用

Calendar
类来实现它。

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

是我的生产日期的实例,我想在当前日期上添加大约 100 天来达到到期日期,并将其存储在变量中

doe
但无法做到这一点。

java date
3个回答
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
投票
    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...
}

1
投票

java.time

几年后的现在,旧的 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 ) ;
© www.soinside.com 2019 - 2024. All rights reserved.