2012-11-06 101 views
1

任何人都可以請幫忙。 我正在創建日曆中的當前日期。 然後我想通過添加月數來設置一個字符串到一個新的日期.. 當我使用下面的代碼時,它的作品,當我添加12個月迄今, 但是當我嘗試添加1個月,然後下一個日期是1月(+2個月) 當我嘗試添加3個月時,下一個日期是4月。 6個月,下個日期是2013年10月等.... 當試圖添加24,36或48個月時,它幾乎可以工作,但是提前1個月。 似乎沒有要來的日期是如何改變添加到日曆日期...不準確?

//Get Current date and set as text 
    Calendar c = Calendar.getInstance(); 
    c.add(Calendar.MONTH, Retest);  // Months to Date 
    int day = c.get(Calendar.DATE); 
    int month = c.get(Calendar.MONTH); 
    int year = c.get(Calendar.YEAR); 

    if (month<=9) { MONTH$ = "0"+month ;} 
    else {MONTH$ = ""+month;    } //Set month to MM 

    NextTest$ = ""+day+"/"+MONTH$+"/"+year; //Put date ints into string DD/MM/YYYY 

    Toast.makeText(this, "Re-Test Due.. "+NextTest$, Toast.LENGTH_SHORT).show(); 
+3

請給出一個樣本日期,並記住,您可以通過反覆添加幾個月來明確地丟失信息 - 1月30日+ 1個月應該是什麼? –

+1

您不需要這麼做,只需使用帶有「dd/MM/yyyy」模式的'DateFormat'。 –

+0

當我用'Retest = 1'運行你的代碼時,我得到了2013年12月6日('6/11/2012'以0爲基礎的月份)。 'Retest = 2',我得到了2013年1月6日。'Retest = 3',我得到了2013年2月6日。正如Jon所說,你需要給我們提供一些樣本輸入和輸出,並且可能會展示如何定義'Retest' 。 – Eric

回答

1

根據Java文檔,如果有任何值傳遞給壓光機的添加功能的模式,是不是該字段的值大於它會增加模的。請參考GregorianCalender文檔

2

在日曆API中1月映射爲0,因此10月份的月份映射爲9.因此,如果您試圖根據人類日曆查找當前月份,請將java日曆的月份值加1,那麼只計算這個值。

int day = c.get(Calendar.DATE); 
    int month = c.get(Calendar.MONTH) + 1; //It should work for you. 
    int year = c.get(Calendar.YEAR); 
+0

@ Coops5575我的解決方案適合您嗎?還是你在尋找別的東西? – Vishal