Календарь и TimeZone - PullRequest
       31

Календарь и TimeZone

0 голосов
/ 16 октября 2019

У меня есть список элементов с датой для каждого элемента. Я хочу зациклить элементы и перечислить только те, которые сегодня. Я использую epochDays (дни с 01.01.1970 с использованием TimeUnit.MILLISECONDS.toDays (millis))

В течение дня все работает отлично, проблема в полночь и вперед. Из моего тестирования кажется, что проблема в часовом поясе GMT ​​+ 3. До 3 часов утра приложение все еще думает, что это накануне.

Сначала я подумал, что достаточно:

Calendar loopItems = Calendar.getInstance();
loopItems.setTimeZone(TimeZone.getTimeZone("UTC"));

Очевидно, этого не было, и проблема все еще была. После нескольких тестов я понял, что для того, чтобы часовой пояс был эффективным, мне нужно заново установить время ПОСЛЕ установки часового пояса, поэтому мне пришлось сделать следующее:

Calendar loopItems = Calendar.getInstance();
loopItems.setTimeZone(TimeZone.getTimeZone("UTC"));
Calendar cal = Calendar.getInstance();
loopItems.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE),0,0,10);

Только после вышеупомянутого, последо полуночи и до 3 часов ночи вместо новых за день были перечислены «новые предметы».

Я что-то упустил? Есть ли лучший / более чистый способ сделать это? Спасибо

...