Почему я не понимаю год правильно, используя SimpleDateFormat в Java?
-
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 ?
Я попытался изменить формат на ГГГГ-ММ-дд
(получил ошибку) и гг-ММ-дд
(ничего не сделал). Я программирую на Android, не знаю, важно ли это.
Пока я обхожу это, используя разделение, но это грязно и мешает мне использовать функции i18n.
Решение
Этот год относится к 1900 году. Это "особенность" класса Date
. Попробуйте использовать Calender
.
Другие советы
Спасибо Аарону, правильная версия:
Calendar c = Calendar.getInstance();
c.setTime(sdf.parse(date));
System.println(c.get(Calendar.YEAR));
Не связан с StackOverflow