Я получаю миллисекунды для диспетчера аварийных сигналов, чтобы установить повторяющийся сигнал тревоги, и я получаю странные результаты -
Я поставил будильник на 8:55
LocalDateTime Earliest Day : 2018-05-22T08:55
Instant : 2018-05-22T08:55:00Z
Затем я использовал этот метод, чтобы получить миллисекунды с эпохи (1970 г.) -
LogUtils.LOGD(TAG, instant.toEpochMilli() + " : instant.toEpochMilli()");
Я получил сигнал тревоги мгновенно, поэтому я проверил старый способ получения миллисекунд из календаря и времени Java -
1526996659862 : System.currentTimeMillis() :
1526979300000 : instant.toEpochMilli()
1526997319862 : calendar.getTimeInMillis()
Я получил localdatetime, созданный этим -
LocalDateTime earliestDay = LocalDateTime.of(
now.getYear(), now.getMonth().getValue(), now.getDayOfMonth(),
localTime.getHour(), localTime.getMinute(), localTime.getSecond());
Затем я конвертирую его в Instant и использую ZoneOffset - UTC -
Instant instant = earliestDay.toInstant(ZoneOffset.UTC);
Я не уверен, почему toEpochMilliseconds не работает так, как задумано?
Входы календаря -
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, earliestDay.getHour());
calendar.set(Calendar.MINUTE, earliestDay.getMinute());
Instant
в 8:55 UTC, как вы и просили. ВыCalendar
, кажется, находитесь в 13:55 UTC, что говорит о том, что он был создан со смещением зоны -05:00. - person Ole V.V.   schedule 23.05.2018