如何在特定日期添加月数

时间:2015-05-15 13:47:22

标签: java servlets

我想根据用户选择的内容在特定日期添加一些月份。例如,将2015年5月15日增加3个月。 我尝试了一些东西,但它向我显示了相同的日期。

以下代码:

Calendar aed = Calendar.getInstance();
int monthsToAdd = 0;
if (advertPostedDate.equals(1)) {
    monthsToAdd = 1;
}
if (advertPostedDate.equals(2)) {
    monthsToAdd = 2;
}
if (advertPostedDate.equals(3)) {
    monthsToAdd = 3;
}

aed.add(Calendar.MONTH, monthsToAdd);
Date advertED = aed.getTime();
DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
String advertExpiryDate = df.format(advertED);

2 个答案:

答案 0 :(得分:1)

您的代码看起来很好,但我会使用if/else if结构而不仅仅是if结构。您确定advertPostedDate的值为1,2或3吗?因为如果没有,那么0会被添加到几个月。

public static void main(String[] args) {
    Integer advertPostedDate = 2;

    Calendar aed = Calendar.getInstance(); // 15-5-2015
    int monthsToAdd = 0;
    if (advertPostedDate.equals(1)) {
        monthsToAdd = 1;
    } else if (advertPostedDate.equals(2)) {
        monthsToAdd = 2;
    } else if (advertPostedDate.equals(3)) {
        monthsToAdd = 3;
    }

    aed.add(Calendar.MONTH, monthsToAdd);
    Date advertED = aed.getTime();
    DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
    String advertExpiryDate = df.format(advertED);

    System.out.println(advertExpiryDate);
}

结果:

  

15-07-2015

答案 1 :(得分:0)

我建议您使用Joda-Time

DateTime dt = new DateTime(2015, 5, 15, 12, 0, 0, 0);
DateTime plusPeriod = dt.plusMonths(3);