Расчет секунд до полуночи определенного часового пояса
Я пытаюсь написать код, который вычисляет, сколько времени в секундах осталось до полуночи в определенном часовом поясе.
Часовой пояс, на который я нацеливаюсь, - EDT, это "GMT-04:00".
Я обнаружил, что многие темы охватывают расчет времени, но ни одна из них не помогла мне понять, как вычислить секунды, оставшиеся до полуночи в определенном часовом поясе.
Может кто-то указать мне верное направление?
Благодарю.
2 ответа
Я полагаю, что это логика, которую вы ищете? (Не смотрите на вопрос, только первый ответ, ссылаясь на календарь, локали и часовые пояса)
Используя Календарь и часовые пояса, чтобы вычислить точное время, затем просто используйте этот объект календаря, чтобы найти разницу между другим установленным объектом календаря в полночь:)
long разность InMillis = midnightCalendarObject.getTimeInMillis () - calendarObject.getTimeInMillis ();
long secondsUntilMidnight = TimeUnit.toSeconds (diffInMillis);
java.time
ZoneId zone = ZoneId.of("America/New_York");
ZonedDateTime now = ZonedDateTime.now(zone);
ZonedDateTime midnight = now.toLocalDate().plusDays(1).atStartOfDay(zone);
long secondsLeftTillMidnight = Duration.between(now, midnight).getSeconds();
System.out.println("Seconds till midnight: " + secondsLeftTillMidnight
+ ". Time now: " + now + '.');
Вывод только сейчас:
Секунды до полуночи: 34801. Время: 2018-10-01T14:19:58.651572-04:00[Америка / Нью-Йорк].
Вопрос: Могу ли я использовать java.time
на андроид?
Да, java.time
прекрасно работает на устройствах Android. Это просто требует как минимум Java 6.
- В Java 8 и более поздних версиях, а также на новых устройствах Android (от 26 уровня API, как мне говорят) новый API поставляется встроенным.
- В Java 6 и 7 получают ThreeTen Backport, бэкпорт новых классов (ThreeTen для JSR 310, где впервые был описан современный API).
- На (более старой) версии Android используйте версию Android ThreeTen Backport. Это называется ThreeTenABP. Убедитесь, что вы импортируете классы даты и времени из пакета
org.threeten.bp
и подпакеты.
связи
- Учебник Oracle: Дата и время, объясняя, как использовать
java.time
, - Проект ThreeTen Backport
- ThreeTenABP, Android-версия ThreeTen Backport
- Вопрос: Как использовать ThreeTenABP в Android Project, с очень подробным объяснением.
- Запрос спецификации Java (JSR) 310.