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();
4

2 に答える 2

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);
于 2012-11-06T18:38:25.060 に答える
1

Java Docs によると、Calender の Add 関数に値が渡された場合、フィールドの値よりも大きくなり、そのモジュロが追加されます。GregorianCalendarのドキュメントを参照してください

于 2012-11-06T18:28:10.760 に答える