2

Formatでデータを解析しようとするとMySql、に遭遇しましSimpleDateFormatた。適切な日と月を取得できますが、その年の結果は奇妙です。

date = 2009-06-22;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
Date d = sdf.parse(date);
System.println(date);
System.println(d.getDate());
System.println(d.getMonth());
System.println(d.getYear());

出力:

2009-06-22
22           OK
5            Hum... Ok, months go from 0 to 11
109          o_O WTF ?

フォーマットをYYYY-MM-dd(エラーが発生)とyy-MM-dd(何もしなかった)に変更してみました。私はAndroidでプログラミングしていますが、それが重要かどうかわかりません。

今のところ、分割を使用してそれをバイパスしますが、それは汚れていて、i18n機能を使用できません。

4

2 に答える 2

12

Date年は1900年を基準にしています。それがクラスの「特徴」です。を使用してみてくださいCalender

于 2009-06-22T16:26:29.537 に答える
5

正しいバージョンの Aaron に感謝します。

Calendar c = Calendar.getInstance(); 
c.setTime(sdf.parse(date));
System.println(c.get(Calendar.YEAR));
于 2009-06-22T16:36:27.747 に答える