Календарная дата отличается - PullRequest
0 голосов
/ 04 декабря 2018

Почему Calendar в Android дает разные даты на разных устройствах Android?Я получил локаль по умолчанию, но у меня все та же проблема.

Код:

calendar = Calendar.getInstance();
currentDate = DateFormat.getDateInstance(DateFormat.DATE_FIELD,Locale.getDefault())
    .format(calendar.getTime());

1 Ответ

0 голосов
/ 05 декабря 2018

Почему Календарь в Android дает разные даты на разных устройствах Android?

  1. Calendar.getInstance использует системные часы, поэтому, если часы разных устройств установлены по-разному, вы получите разное время.
  2. В вашем формате даты используется часовой пояс JVM по умолчанию (который не имеет ничего общего с локалью).Поскольку во всех часовых поясах эта дата никогда не бывает одинаковой, вы должны получать разные даты (даже если системные часы правильно установлены на текущее время).

Тем не менее, Calendar и *У классов 1013 * довольно серьезные проблемы с дизайном, и я считаю, что они давно устарели.Если вы делаете значительную работу с датами или временем в вашем приложении, вы, вероятно, должны использовать вместо этого java.time.Это современный Java-интерфейс даты и времени, гораздо лучше разработанный и с которым гораздо удобнее работать.

Вопрос: Можно ли использовать java.time на Android?

Да, java.time работаетприятно на старых и новых устройствах Android.Для этого требуется как минимум Java 6 .

  • В Java 8 и более поздних версиях и на более новых устройствах Android (от уровня API 26) современный API поставляется встроенным.
  • В Java 6 и 7 получают ThreeTen Backport, бэкпорт новых классов (ThreeTen для JSR 310; см. Ссылки внизу).
  • На (более старых) Android используется версия ThreeTen для AndroidBackport.Это называется ThreeTenABP.И убедитесь, что вы импортируете классы даты и времени из org.threeten.bp с подпакетами.

Ссылки

...