0

我正在开发一个简单的 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){
      ...
}

在我上面的代码中,driver_Time 和 Rider_Time 是两个刺痛点,比如司机的 3:00 和骑手的 11:00。

我必须设置一个满足上午 11:00 和晚上 7:00 时间限制的条件,否则时间应根据司机的时间而有所不同。

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

4

1 回答 1

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));
    }
于 2013-06-09T09:15:13.587 回答