3

後で別の値と比較するために、カレンダーの値をベース(0)に設定しようとしています。結果を印刷しようとすると、SimpareDateFormatを使用したときに月の値が取得されます。何かご意見は?そして私はそれを正しくやっていますか?

SimpleDateFormat DataDateFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat DataDateFormatMonth = new SimpleDateFormat("MM");

Calendar cld = Calendar.getInstance();
cld.set(1, 1, 1);

System.out.println(DataDateFormat.format(cld.getTime()));       //  ->  0001-02-01
System.out.println(DataDateFormatMonth.format(cld.getTime()));  //  ->  02      !!!!
System.out.println(cld.get(Calendar.MONTH));                    //  ->  1
4

4 に答える 4

4

Calendar APIでは、月の間隔は0〜11です。

JAN--->0
.......
DEC--->11

Calendar.MONTHはint値(2)を返します。これは、あなたの場合はMMの値です。つまり、Calander.MONTHは定数です

内訳:

System.out.println(cld.get(Calendar.MONTH));                    //  ->  1
Calaender.MONTH--- 2
cld.get(2); will get the value at the given calendar field. (in this case 2, your month field whihc is 1) 

たとえば、最後の印刷ステートメントを次のように変更します

 Calendar cld = Calendar.getInstance();
 cld.set(10, 10, 1100); (format is MM,dd,YYYY)
 System.out.println(cld.get(Calendar.YEAR));             

Calendar.YEARは1を返すため、出力は10(月の値を形式で返します)になります。

于 2012-11-12T09:45:31.580 に答える
3

月は0で始まりcalanderます。1月->0、2月-> 1...12月->11

于 2012-11-12T09:45:10.303 に答える
1

set()パラメータのAPIから:

  • year-YEAR時間フィールドの設定に使用される値。
  • 月-MONTH時間フィールドの設定に使用される値。月の値は0ベースです。たとえば、1月の場合は0。
  • date-DATE時間フィールドの設定に使用される値。
于 2012-11-12T09:50:18.760 に答える
0

これは、入力日をフォーマットし、月である値new SimpleDateFormat("MM")のみを返すように取得したいものです。MM

于 2012-11-12T09:45:05.450 に答える