Годы неверны в классах дат Android - PullRequest
1 голос
/ 18 октября 2010

Я пытаюсь сравнить даты, и я нашел, где мой код работает неправильно, но я не знаю почему.

Я пытаюсь сравнить дату с сегодняшней (используя только григорианские календари).Я распечатал сегодняшнюю дату, где бы она ни упоминалась в коде, и в одном месте она волшебным образом меняется с 2010 года на 3910 год (сегодняшний год + 1900).

Кто-нибудь знает причину этого?

//Prints out 2010   
System.out.println("TodaysDate.getYear():\t"+todaysDate.getYear());
//Prints out 2010
System.out.println(todaysDate);

//Getting a year from a string (it is 2010)
todaysDate.setYear(Integer.parseInt(yea));

//Prints out 2010   
System.out.println("TodaysDate.getYear():\t"+todaysDate.getYear());
//Prints out 3910   
System.out.println(todaysDate);

1 Ответ

8 голосов
/ 18 октября 2010

Дата обычно хранится как «количество лет с 1900 года», поэтому вам необходимо это компенсировать. Вы можете видеть это в документации для Date: http://developer.android.com/reference/java/util/Date.html

РЕДАКТИРОВАТЬ: я должен упомянуть, что я отправил в качестве комментария. Джефф Шарки рекомендовал против класса календаря (если вы используете это тоже). android.text.format.DateUtils гораздо легче (вы увидите, что телефон немного зависает при первой загрузке класса Calendar, особенно на старых телефонах). DateUtils доступен в Android 1.5 и выше.

...