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

时间:2013-06-07 12:00:11

标签: java datetime

我正在开发一个简单的java应用程序,我必须在其中设置时间限制constratint。在我的应用程序中,我必须只允许在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){
      ...
}

在我上面的代码中,driver_Time和rider_Time是两个叮叮,比如驱动程序的3:00和骑手的11:00。

我必须设置满足上午11:00和下午7:00时间限制的条件,或者时间应根据驾驶员的时间而变化。

请建议一些满足此条件的代码,包括上午和下午

1 个答案:

答案 0 :(得分:0)

我已经通过以下代码解决了这个问题:

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));
    }