2010-08-03 2 views
0

У меня вопрос о работе со временем в java, более конкретно в Android.Вопрос времени .. и как манипулировать им в java

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

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

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 часу утра.

Я понимаю, что это имеет какое-то отношение к летнему времени, но я не уверен, как его обойти.

Любая помощь очень ценится.

Благодаря

Кев

+0

если вы используете опцию формата «код» (значок с 1 и 0), а не blockquote, вы получите более красивое форматирование. –

+0

Используйте Joda Time: http://joda-time.sourceforge.net/ – 2010-08-03 15:34:36

+0

@Peter, спасибо за подсказку форматирования. Я бы предпочел не использовать какие-либо сторонние плагины, конечно, есть способ справиться с этим в автономном java? Причина, по которой я не уверен в добавлении в java, который поставляется с комплектом для разработки Android., Thanks –

ответ

1

Его, потому что эпоха, и теперь имеют разные часовые пояса, эффективно, благодаря 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(); 
+0

Спасибо, именно то, что я искал. –

Смежные вопросы