javaでSimpleDateFormatを使用して年を正しく取得しないのはなぜですか?
-
06-07-2019 - |
質問
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でプログラミングしていますが、それが重要かどうかわかりません。
今のところ、分割を使用してそれをバイパスしますが、それは汚れているため、国際化機能を使用できません。
解決
年は1900年を基準としています。これは「機能」です。 Date
クラスの。 Calender
を使用してみてください。
他のヒント
アーロン、正しいバージョンに感謝します:
Calendar c = Calendar.getInstance();
c.setTime(sdf.parse(date));
System.println(c.get(Calendar.YEAR));
所属していません StackOverflow