Java 获取动态时间约束的上一个和下一个小时限制

Java 获取动态时间约束的上一个和下一个小时限制,java,datetime,Java,Datetime,我正在开发一个简单的java应用程序,其中我必须设置一个时间限制。在我的应用程序中,我必须只允许在4小时范围内找到路线,例如,如果驾驶员发布了下午3点的路线,则骑手只有在搜索上午11点(4小时前)到下午7点(4小时后)之间的时间时才会找到路线。我在应用程序中使用12小时时间格式。我的代码是: SimpleDateFormat parser = new SimpleDateFormat("hh:mm"); Date driverTimeLimit =

我正在开发一个简单的java应用程序,其中我必须设置一个时间限制。在我的应用程序中,我必须只允许在4小时范围内找到路线,例如,如果驾驶员发布了下午3点的路线,则骑手只有在搜索上午11点(4小时前)到下午7点(4小时后)之间的时间时才会找到路线。我在应用程序中使用12小时时间格式。我的代码是:

    SimpleDateFormat parser = new SimpleDateFormat("hh:mm");
                    Date driverTimeLimit = null;
                    Date riderTimeCompare = null;
                    try {
                        driverTimeLimit = parser.parse(driver_Time);
                        riderTimeCompare = parser.parse(rider_Time);
                    } catch (ParseException e) {
                        e.printStackTrace();
                    }

                    Calendar cal = Calendar.getInstance();
                    cal.setTime(driverTimeLimit);
                    cal.add(Calendar.HOUR_OF_DAY, 4);
                    cal.getTime();

                    Calendar cal1 = Calendar.getInstance();
                    cal1.setTime(driverTimeLimit);
                    cal1.add(Calendar.HOUR_OF_DAY, -4);
                    cal1.getTime();
    if(riderTimeCompare.compareTo(cal.getTime())<=0 && riderTimeCompare.compareTo(cal1.getTime())>=0){
      ...
}
SimpleDataFormat解析器=新的SimpleDataFormat(“hh:mm”);
日期驱动器rtimelimit=null;
日期riderTimeCompare=null;
试一试{
driverTimeLimit=parser.parse(驱动程序时间);
riderTimeCompare=parser.parse(骑手时间);
}捕获(解析异常){
e、 printStackTrace();
}
Calendar cal=Calendar.getInstance();
校准设置时间(驱动器限制);
计算添加(日历小时/天,4);
cal.getTime();
Calendar cal1=Calendar.getInstance();
计算1.设置时间(驱动器限制);
计算1.添加(日历.小时/天,-4);
cal1.getTime();
如果(riderTimeCompare.compareTo(cal.getTime())=0){
...
}
在我上面的代码中,driver_Time和rider_Time是两个sting,比如driver为3:00,rider为11:00

我必须设置一个满足上午11:00和晚上7:00时间限制的条件,否则时间应根据驾驶员的时间而变化


请推荐一些满足此条件的代码,包括am和pm

我已通过以下给定代码解决了此问题:

public static void main(String[] args) {

        try {
            String dTime = "03:00PM";
            String rTime = "11:00AM";

            System.out.println(convertTo24HoursFormat(dTime));
            System.out.println(convertTo24HoursFormat(rTime));

            SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");

            Date dDate = dateFormat.parse(convertTo24HoursFormat(dTime));
            Date rDate = dateFormat.parse(convertTo24HoursFormat(rTime));

            System.out.println("Driver Date=" + dDate);
            System.out.println("Rider Date=" + rDate);

            Calendar calendar1 = Calendar.getInstance();
            calendar1.setTime(dDate);
            calendar1.add(Calendar.HOUR_OF_DAY, 4);

            Calendar calendar2 = Calendar.getInstance();
            calendar2.setTime(dDate);
            calendar2.add(Calendar.HOUR_OF_DAY, -4);

            System.out.println("Driver Date after adding 4 hours="
                    + calendar1.getTime());
            System.out.println("Driver Date after subtracting 4 hours="
                    + calendar2.getTime());
            System.out.println("Rider Date=" + rDate);

            if (rDate.compareTo(calendar1.getTime()) <= 0
                    && rDate.compareTo(calendar2.getTime()) >= 0) {
                System.out.println("Route acceptable");
            } else {
                System.out.println("Route not acceptable");
            }

        } catch (ParseException ex) {
        }
    }

    private static final DateFormat TWELVE_TF = new SimpleDateFormat("hh:mma");
    private static final DateFormat TWENTY_FOUR_TF = new SimpleDateFormat(
            "HH:mm");

    public static String convertTo24HoursFormat(String twelveHourTime)
            throws ParseException {
        return TWENTY_FOUR_TF.format(TWELVE_TF.parse(twelveHourTime));
    }
publicstaticvoidmain(字符串[]args){
试一试{
字符串dTime=“03:00PM”;
字符串rTime=“11:00AM”;
System.out.println(转换为24小时格式(dTime));
System.out.println(转换为24小时格式(rTime));
SimpleDataFormat dateFormat=新的SimpleDataFormat(“HH:mm”);
dateddate=dateFormat.parse(转换为24小时格式(dTime));
daterDate=dateFormat.parse(convertTo24HoursFormat(rTime));
System.out.println(“驱动程序日期=”+dDate);
System.out.println(“附加日期=“+rDate”);
Calendar calendar1=Calendar.getInstance();
日历1.设置时间(dDate);
calendar1.添加(Calendar.HOUR\u OF_DAY,4);
Calendar calendar2=Calendar.getInstance();
日历2.设置时间(dDate);
calendar2.add(Calendar.HOUR\u OF_DAY,-4);
System.out.println(“添加4小时后的驱动程序日期=”
+calendar1.getTime());
System.out.println(“减去4小时后的驾驶员日期=”
+calendar2.getTime());
System.out.println(“附加日期=“+rDate”);
if(rDate.compareTo(calendar1.getTime())=0){
系统输出打印项次(“可接受的路线”);
}否则{
System.out.println(“路线不可接受”);
}
}捕获(解析异常){
}
}
私有静态最终日期格式12_TF=新的SimpleDateFormat(“hh:mma”);
private static final DateFormat twork\u FOUR\u TF=新的SimpleDateFormat(
“HH:mm”);
公共静态字符串转换为24小时格式(字符串十二小时)
抛出解析异常{
返回二十四TF.format(十二TF.parse(十二小时));
}