2

「1月」、「2月」などを整数としてデータベースに渡します。対応する月に1〜12を渡す必要がありますが、カレンダーから0〜11を取得しています

これが私がやっている方法です。これを微調整して、月を0-11ではなく1-12にするのを手伝ってください

//Get month as an integer.
Date date = new SimpleDateFormat("MMM", Locale.ENGLISH).parse(stringMonth);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int month = cal.get(Calendar.MONTH);
System.out.println("month ==" + month);
4

3 に答える 3

9
  int month = cal.get(Calendar.MONTH) + 1;

カレンダーの月は0インデックス(1月= 0)です。上記のコードは奇妙に思えますが、Calendarの月のインデックスがかなり奇妙なため、Javaでよく見られます。

この投稿には、このトピックに関するディスカッションがあります。Javaカレンダーで1月が0になるのはなぜですか。

于 2012-10-26T14:56:25.910 に答える
1

これCalendarは、クラスがMonthからのインデックスを使用するためです[0-11]

したがって、からインデックスを取得するには、取得したインデックス[1-12]に1を追加します。-

int month = cal.get(Calendar.MONTH) + 1;
于 2012-10-26T14:55:58.297 に答える
1

いずれかの変更:

int month = cal.get(Calendar.MONTH) + 1;

また

System.out.println("month ==" + (month) + 1) ;

(ただし、両方を行わないでください!)

monthこれにより、で表されるのに1の「オフセット」が追加されint、0-11から1-12にシフトされます=)

于 2012-10-26T14:57:07.330 に答える