I have the following snippet of code that determines if a job is within its runtimes:
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();
}
Here is the output of one run:
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
I am not sure why the computed start time and computed end times are five hours ahead. I would expect that Start Time would be Sun Jul 14 13:15:00 EDT 2013
and End Time would be Sun Jul 14 18:15:00 EDT 2013
.
Can anyone point out where I am going wrong? I'm not intimately familiar with Date
and I suspect I'm overlooking something simple.