Вопрос времени .. и как манипулировать им в Java - PullRequest
0 голосов
/ 03 августа 2010

У меня есть вопрос о работе со временем в Java, более конкретно в Android.

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

поэтому мой код выглядит следующим образом:

Calendar now = Calendar.getInstance();  
long milliseconds = now.getTimeInMillis();  
long since_midnight = milliseconds%(86400000);  
long checkpoint = (milliseconds - since_midnight); 

однако, когда я конвертирую переменную контрольной точки в дату, используя:

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");  
last_logged_text=formatter.format(checkpoint);

Я получаю представление времени, соответствующее 1 часу утра.

Я понимаю, что это как-то связано с переходом на летнее время, но я не уверен, как обойти это.

Любая помощь с благодарностью.

Спасибо

Кев

1 Ответ

1 голос
/ 03 августа 2010

Это потому, что эпоха и сейчас имеют разные часовые пояса, по сути, благодаря DST, как вы заявляете.

Гораздо лучший способ сделать то, что вы хотите, это получить «сейчас», отрезать часть времениоставив тебя с полуночи прошлой ночью.

Calendar midnight = Calendar.getInstance ();

midnight.set (Calendar.HOUR_OF_DAY, 0);
midnight.set (Calendar.MINUTE, 0);
midnight.set (Calendar.SECOND, 0);
midnight.set (Calendar.MILLISECOND, 0);

long millisSinceMidnight = System.currentTimeMillis() - midnight.getTimeInMillis();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...