2013-09-05 4 views
0

Я пытаюсь получить текущее время, используяПолучить текущее время, установить время объекта и сравнить

Date date = new Date().getHours(); 

Но я вижу, что это было depracated в SE 7. Кроме того, я пытаюсь создать объект Date а затем просто установить часы на нем, используя

Date date = new Date().setHours(); 

И это тоже устарело. Позвольте мне изложить то, что я хочу сделать: я хочу запустить процесс, когда между полуночью и 5 утра утром. То, как я это сделаю (или хотел сделать так или иначе), создало две переменные. Один указывает время начала (будучи полночь), а другое время остановки (5 часов утра).

Я бы зацикливал программу все время каждые 5 минут, получая текущее время и сравнивая ее с временем начала и останавливая время, чтобы увидеть, падает ли это между этими двумя временами. А затем запустите процессы, которые я хочу запустить.

Итак, со всем этим методом лишения (я не знал, что это за разумность), что в настоящее время лучший способ сделать это в SE 7?

PS - Так как меня беспокоит только время, нужно ли даже использовать класс Date, а не что-то еще?

+0

Вы можете взглянуть на этот вопрос: HTTP: //stackoverflow.com/questions/6965296/running-a-java-method-at-a-set-time-each-day – Julien

+0

Используйте java.util.Calendar класс, если вы используете java7. –

+0

См. Этот документ http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html –

ответ

1

Использование Joda Time. Я понимаю, что он станет частью основных Java-библиотек Java 8 (поправьте меня, если я ошибаюсь здесь).

Ядром класс DateTime, и вы можете сделать что-то вроде этого

int hours = new DateTime().getHoursOfDay(); 

и

new DateTime().setHoursOfDay(hours); 

Это гораздо быстрее и эффективнее, чем календарь.


Просто заметил ваш PS - Joda также имеет класс с именем LocalTime, который должен быть совершенным, если вы заботитесь только о времени, а не дата

+0

Очень красиво, просто и эффективно. Я скорее пойду с этим, что класс Календаря выглядит немного тяжелым и грязным. Было бы здорово, если бы это стало частью Java 8 – Tiwaz89

4

Вы можете справиться с этим, используя экземпляр календаря.

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.HOUR, 5); //hours to add 
+0

Спасибо! Как бы сравнить два объекта Calendar? – Tiwaz89

+0

Использование 'Calendar.getTime()' - возвращает 'Date' - это сопоставимо – Joshua

2

Есть лучшие альтернативы, как Calendar и TimerTasks, но если вы хотите управлять с датами, вы можете использовать что-то вроде:

final long FIVE_HOURS = 5 * 60 * 60 * 1000; 
Date startTime = new Date(); 
Date endTime = new Date(startTime.getTime() + FIVE_HOURS); 
+0

Большое спасибо, я думаю, что я скорее использую Calendar TimerTask, как вы предлагали. – Tiwaz89

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