2015-05-15 23 views
0

我想根據用戶選擇的內容將某個月數添加到特定日期。例如在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); 
+1

能告訴你這個代碼是如何使用的:它是在方法調用中?什麼是「advertPostedDate」的類型? –

+1

嘗試打印'advertPostedDate'的值。 伊莫,它從來沒有1 2或3,所以你總是添加0個月。 – DeadlyJesus

回答

0

我建議你使用喬達時間

DateTime dt = new DateTime(2015, 5, 15, 12, 0, 0, 0); 
DateTime plusPeriod = dt.plusMonths(3); 
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

+0

感謝它的工作,advertPostedDate沒有任何價值。 – Emmanuel

+0

@Emmanuel好聽。請檢查我的答案,以便您的問題得到解決。 – Shar1er80