У меня есть приложение, которое управляет объектами, где каждый объект связан с классом, и имеет порядок выполнения команд в определенное время суток, например один раз в 9 утра, другой в 2 часа дня , Мой вопрос: какой лучший способ обрабатывать только раз в java? Я использую классы «Календарь» и «Время», но я должен обязательно предоставлять год, месяц, день, которые для меня являются непригодными для использования данными. Моя учетная запись управляет расписаниями событий через объект, который обрабатывает даты, не является оптимальной, то как я могу это сделать?лучший способ обрабатывать только часы и минуты в Java
ответ
Joda времени
Использование Joda Time, в частности LocalTime.
LocalTime time = new LocalTime(12, 20);
java.time
Аналогично, пакет java.time встроенный в Java 8 также предлагает LocalTime
класс.
Или, если вы используете Java 8, используйте ['java.time.LocalTime'] (http://docs.oracle.com/javase /8/docs/api/java/time/LocalTime.html). – Jesper
Может быть, вы могли бы использовать пользовательские Comparator
Заказы Календарей или время занятия только полями вы желаете:
class HourMinuteComparator implements Comparator<Calendar> {
public int compare(Calendar c1, Calendar c2) {
int hour1 = c1.get(Calendar.HOUR_OF_DAY);
int hour2 = c2.get(Calendar.HOUR_OF_DAY);
if (hour1 == hour2) {
int minute1 = c1.get(Calendar.MINUTE);
int minute2 = c2.get(Calendar.MINUTE);
return minute2 - minute1;
} else {
return hour2 - hour1;
}
}
}
Спасибо, это хорошо, но когда вы устанавливаете часы календарного объекта, вы должны установить год, месяц и день, ваш пример только получает и сравнивает, но не может установить и пока вы используют объект данных мертвым. –
очень хороший ответ naumcho, но, к сожалению, я не могу использовать эту версию Java. Наконец-то я в конечном итоге создать свой собственный класс:
public class Tiempo {
public Integer hora;
public Integer minuto;
public Integer segundo;
public Tiempo(){}
public Tiempo(String tiempo){
this.parse(tiempo);
}
/**
* Convierte un tiempo de tipo String a formato Tiempo
* @param tiempo Tiempo en formato HH:mm:ss (24 horas)
* @return Retorna true si fué convertido correctamente, en caso contrario retorna false.
*/
public Boolean parse(String tiempo){
try{
this.hora = Integer.parseInt(tiempo.split(":")[0]);
this.minuto = Integer.parseInt(tiempo.split(":")[1]);
this.segundo = Integer.parseInt(tiempo.split(":")[2]);
Boolean valido = (
(this.hora >= 0) &&
(this.hora <= 23) &&
(this.minuto >= 0) &&
(this.minuto <= 59) &&
(this.segundo >= 0) &&
(this.segundo <= 59)
);
if(valido){
return true;
}else{
this.hora = null;
this.minuto = null;
this.segundo = null;
return false;
}
}catch(Exception e){
this.hora = null;
this.minuto = null;
this.segundo = null;
return false;
}
}
/**
*
* @param a Tiempo a comparar
* @param b Tiempo a comparar
* @return Retorna un número negativo si a es menor que b, retorna 0 si son iguales, retorna un número positivo si a es mayor que b, retorna null si uno de ambos tiempos era nulo
*/
static public Integer comparar(Tiempo a, Tiempo b){
if((a == null) || (b == null)){
return null;
}
if(a.hora < b.hora) {
return -1;
}else if(a.hora == b.hora){
if(a.minuto < b.minuto){
return -2;
}else if(a.minuto == b.minuto){
if(a.segundo < b.segundo){
return -3;
}else if(a.segundo == b.segundo){
return 0;
}else if(a.segundo > b.segundo){
return 3;
}
}else if(a.minuto > b.minuto){
return 2;
}
}else if(a.hora > b.hora){
return 1;
}
return null;
}
}
Использование:
Tiempo a = new Tiempo("09:10:05");
Tiempo b = new Tiempo("15:08:31");
if(Tiempo.compare(a, b) < 0){
// a < b
}
Лучшее решение для операций планирования будет cron4j
Вот когда вы устанавливаете выполнение, но для сохранения значения в объекте перед обработкой cron не может использовать эту библиотеку. –
- 1. Соответствующие часы/минуты/секунды в регулярных выражениях - лучший способ?
- 2. Хранить часы и минуты в java
- 3. Как добавить минуты и часы в java?
- 4. JodaTime - часы и минуты
- 5. Как получить только часы и минуты
- 6. preg_match минуты и часы
- 7. Как сделать цифровые часы только часы и минуты
- 8. DateDiff() Часы и минуты?
- 9. C++ конвертирует десятичные часы в часы, минуты и секунды
- 10. секунды в часы, минуты, секунды
- 11. Добавить минуты в поле ввода и отображать часы/минуты
- 12. Как разделить минуты на дни, часы и минуты в tsql
- 13. Java конвертировать минут в часы минуты
- 14. Секунды, часы, минуты и секунды?
- 15. Как сравнить часы и минуты?
- 16. SQL времени Показать часы: минуты только
- 17. Получить Индийское время только в HH: MM часы и минуты
- 18. Преобразование timedelta в дни, часы и минуты
- 19. Найдите отсутствующие часы и минуты в списке
- 20. Как разобрать «GMT + часы: минуты» или «GMT-часы: минуты» с помощью SimpleDateFormat в Java (Android)
- 21. vbscript как конвертировать минуты в день, часы и минуты формат
- 22. Java-код для преобразования секунд в минуты, часы и дни
- 23. Секунд - Минуты - Часы - миллисекунды
- 24. Как получить часы: минуты
- 25. HighCharts Часы/минуты
- 26. Преобразование десятичного времени в часы и минуты
- 27. Неверное преобразование NSTimeInterval в часы и минуты
- 28. Конвертировать TIMEDIFF в часы и минуты
- 29. Как преобразовать число в часы и минуты?
- 30. Преобразование десятичных чисел в часы и минуты
Если вам не нравится существующий 'Calendar' или' date' классы, вы всегда можете написать свой собственный класс 'Time', который будет делать именно то, что вам нужно. –
Я думаю, что у Java 8 есть понятие «время» только класс ... – MadProgrammer