Календарная дата отличается
Почему Calendar
в Android дают разные даты на разных устройствах Android? Я получил локаль по умолчанию, и у меня все та же проблема.
Код:
calendar = Calendar.getInstance();
currentDate = DateFormat.getDateInstance(DateFormat.DATE_FIELD,Locale.getDefault())
.format(calendar.getTime());
1 ответ
Почему Календарь в Android дает разные даты на разных устройствах Android?
Calendar.getInstance
использует системные часы, поэтому, если часы разных устройств установлены по-разному, вы получите разное время.- Ваш формат даты использует часовой пояс JVM по умолчанию (который не имеет ничего общего с локалью). Поскольку это не всегда одна и та же дата во всех часовых поясах, вы должны получать разные даты (даже если системные часы правильно установлены на текущее время).
Тем не менее, Calendar
а также DateFormat
У классов довольно серьезные проблемы с дизайном, и я считаю их давно устаревшими. Если вы делаете значительную работу с датами или временем в вашем приложении, вы, вероятно, должны использовать вместо этого 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 используйте Android-версию ThreeTen Backport. Это называется ThreeTenABP. И убедитесь, что вы импортируете классы даты и времени из
org.threeten.bp
с подпакетами.
связи
- Учебник Oracle: Дата и время, объясняющие, как использовать
java.time
, - Запрос спецификации Java (JSR) 310, где
java.time
был впервые описан. - Проект ThreeTen Backport, бэкпорт
java.time
в Java 6 и 7 (ThreeTen для JSR-310). - ThreeTenABP, Android-версия ThreeTen Backport
- Вопрос: Как использовать ThreeTenABP в Android Project, с очень подробным объяснением.