Почему я не понимаю год правильно, используя SimpleDateFormat в Java?

StackOverflow https://stackoverflow.com/questions/1028139

Вопрос

Я пытаюсь проанализировать данные в формате 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 ?

Я попытался изменить формат на ГГГГ-ММ-дд (получил ошибку) и гг-ММ-дд (ничего не сделал). Я программирую на Android, не знаю, важно ли это.

Пока я обхожу это, используя разделение, но это грязно и мешает мне использовать функции i18n.

Это было полезно?

Решение

Этот год относится к 1900 году. Это "особенность" класса Date . Попробуйте использовать Calender .

Другие советы

Спасибо Аарону, правильная версия:

Calendar c = Calendar.getInstance(); 
c.setTime(sdf.parse(date));
System.println(c.get(Calendar.YEAR));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top