У меня есть следующий фрагмент кода, который определяет, будет ли работа находится в пределах его автономной работы:Java Дата Math Issue
private boolean isDuringRuntime(Job job) {
Date now = new Date();
System.out.println(DateUtil.getToday());
System.out.println(job.getStartTime().toString());
System.out.println(job.getEndTime().toString());
Date startTime = new Date(job.getStartTime().getTime()
+ DateUtil.getToday().getTime());
Date endTime = new Date(job.getEndTime().getTime()
+ DateUtil.getToday().getTime());
System.out.println("Start Time: " + startTime.toString());
System.out.println("Stop Time: " + endTime.toString());
return now.after(startTime) && now.before(endTime);
}
DateUtil.getToday()
public static Date getToday() {
Date now = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(now);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
Вот выход один пробег:
Sun Jul 14 00:00:00 EDT 2013 //This is DateUtil.getToday();
1970-01-01 13:15:00.0 //Raw Start Time
1970-01-01 18:15:00.0 //Raw End Time
Start Time: Sun Jul 14 18:15:00 EDT 2013 //Computed Start Time
Stop Time: Sun Jul 14 23:15:00 EDT 2013 //Computed End Time
Я не уверен, время окончания - пять часов вперед. Я бы ожидал, что Start Time будет Sun Jul 14 13:15:00 EDT 2013
, а End Time будет Sun Jul 14 18:15:00 EDT 2013
.
Может ли кто-нибудь указать, где я иду не так? Я не знаком с Date
, и я подозреваю, что я пропускаю что-то простое.
Он отформатирован с использованием часового пояса вашего устройства. Вы опережаете 5 часов по Гринвичу? –
Я ЭДТ. Но я читал, что 'java.util.Date' не учитывает часовой пояс, здесь: http://stackoverflow.com/a/2892156/714969 Учитывает ли это это в конструкторе? –
Не могли бы вы предоставить код DateUtil.getToday() и job.getStartTime()? Кроме того, вы печатаете время начала и окончания 'followJob', но вы добавляете начальное и конечное время' job' до сегодняшнего дня. –