我希望得到当前的系统时间,并将两个不同的时间示例startwindow时间比作2:00:00 AM,将endWindowTime作为6:00:00 AM。如果我当前的系统时间落在这些窗口之间,我必须执行剩余的代码。
当我使用JAVA 1.4执行相同的代码时,我的下面的代码适用于JAVA 1.6版本我正在获得不同的日期和时间
String starTime=(String) NightlyvendorStatus[0].getPropertyValue("startTime");
String endTime=(String) NightlyvendorStatus[0].getPropertyValue("endTime");
Date windowStarttime = new SimpleDateFormat("HH:mm:ss").parse(starTime);
Date windowEndtime = new SimpleDateFormat("HH:mm:ss").parse(endTime);
Date systemdate = new Date();
SimpleDateFormat parser = new SimpleDateFormat("HH:mm:ss");
String systemTime=parser.format(systemdate);
Date currentTime = new SimpleDateFormat("HH:mm:ss").parse(systemTime);
if (currentTime.after(windowStarttime) && currentTime.before(windowEndtime))
{ ---- ---- other code ----}
JAVA 1.4 IS的输出
Thu Jan 01 02:00:00 GMT 1970
Thu Jan 01 06:00:00 GMT 1970
Thu Jan 01 03:23:00 GMT 1970
如何做这个逻辑..
答案 0 :(得分:0)
这样的事情会起作用:
String starTime = "22:00:00";
String endTime = "23:00:00";
SimpleDateFormat parser = new SimpleDateFormat("HH:mm:ss");
Calendar windowStartTime = Calendar.getInstance();
windowStartTime.setTime(parser.parse(starTime));
windowStartTime.set(0, 0, 0);
Calendar windowEndTime = Calendar.getInstance();
windowEndTime.setTime(parser.parse(endTime));
windowEndTime.set(0, 0, 0);
// This covers if time window is crosses days. Ex: 11:00PM to 2:00AM
if(windowStartTime.after(windowEndTime)) {
windowEndTime.add(Calendar.DATE, 1);
}
Calendar currentTime = Calendar.getInstance();
currentTime.set(0, 0, 0);
System.out.println("Current Time: " + currentTime.getTime().toString());
System.out.println("Start Time: " + windowStartTime.getTime().toString());
System.out.println("End Time: " + windowEndTime.getTime().toString());
if(currentTime.after(windowStartTime) && currentTime.before(windowEndTime)) {
System.out.println("Between Time Window");
} else {
System.out.println("Not Between Time Window");
}
我这样做的原因:
windowStartTime.set(0, 0, 0);
windowEndTime.set(0, 0, 0);
currentTime.set(0, 0, 0);
将所有日历放在同一天。