Расчет секунд до полуночи определенного часового пояса

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

Часовой пояс, на который я нацеливаюсь, - EDT, это "GMT-04:00".

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

Может кто-то указать мне верное направление?

Благодарю.

2 ответа

Я полагаю, что это логика, которую вы ищете? (Не смотрите на вопрос, только первый ответ, ссылаясь на календарь, локали и часовые пояса)

/questions/45192195/kak-ispolzovat-calendargetinstance-s-ukazannyim-yazyikovyim-standartom/45192206#45192206

Используя Календарь и часовые пояса, чтобы вычислить точное время, затем просто используйте этот объект календаря, чтобы найти разницу между другим установленным объектом календаря в полночь:)

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 и подпакеты.

связи

Другие вопросы по тегам