Рассмотрим следующий код, чтобы определить, находится ли компонент времени одного объекта Date раньше, чем компонент времени другого объекта Date:
private boolean validStartStopTime( Date start, Date stop ) {
Calendar startCal = Calendar.getInstance();
Calendar stopCal = Calendar.getInstance();
startCal.clear();
stopCal.clear();
startCal.setTime( start );
stopCal.setTime( stop );
startCal.set( Calendar.YEAR, 2011 );
stopCal.set( Calendar.YEAR, 2011 );
startCal.set( Calendar.MONTH, 1 );
stopCal.set( Calendar.MONTH, 1 );
startCal.set( Calendar.DAY_OF_YEAR, 1 );
stopCal.set( Calendar.DAY_OF_YEAR, 1 );
return startCal.before( stopCal );
}
Будет ли это гарантировать, что сравнение по времени является правильным?Есть ли лучшая альтернатива ( Йода не вариант )?Я полагаю, что это эквивалентно установке Calendar
объектов на текущую дату / время и ручному копированию в течение часа, минут и миллисекунд.Вы можете предположить, что часовой пояс одинаков.
РЕДАКТИРОВАТЬ: Чтобы уточнить, что я имею в виду, сравнивая только компонент времени объекта Date
.Я имею в виду, что если смотреть конкретно на отрезок времени, время начала предшествует времени останова.Часть даты АБСОЛЮТНО не имеет значения (в этом случае start = "Jan 2 20011 10AM" и end = "1 Jan 2011 11AM" совершенно нормально), если бы у меня был выбор, я бы просто использовал что-то, содержащее только время, но Date
объект - это то, что мне дали.Я бы не хотел писать последовательность if-else, поэтому у меня есть подход выше, но я приветствую более чистый / лучший подход.