【问题标题】:Compare elapsed time (eg : 08:00 am) to current time android比较经过时间(例如:08:00 am)与当前时间android
【发布时间】:2015-10-30 11:01:22
【问题描述】:

我有一个array 的时间。我每次都从中检索以将其与当前时间进行比较,以便删除经过的时间并创建一个包含剩余时间的新 array

我在比较过去的时间

String timeSlots[] = {"08:00 AM to 08:30 AM", "08:30 AM to 09:00 AM", "09:00 AM to 09:30 AM", "09:30 AM to 10:00 AM", "10:00 AM to 10:30 AM", "10:30 AM to 11:00 AM", "11:00 AM to 11:30 AM", "11:30 AM to 12:00 PM", "12:00 PM to 12:30 PM", "12:30 PM to 01:00 PM", "01:00 PM to 01:30 PM", "01:30 PM to 02:00 PM", "02:00 PM to 02:30 PM", "02:30 PM to 03:00 PM", "03:00 PM to 03:30 PM", "03:30 PM to 04:00 PM", "04:00 PM to 04:30 PM", "04:30 PM to 05:00 PM", "05:00 PM to 05:30 PM", "05:30 PM to 06:00 PM", "06:00 PM to 06:30 PM", "06:30 PM to 07:00 PM", "07:00 PM to 07:30 PM", "07:30 PM to 08:00 PM", "08:00 PM to 08:30 PM", "08:30 PM to 09:00PM"};


for (int i = 0; i < timeSlots.length; i++) {
            timeSlotesTemp[i] = timeSlots[i].substring(0, 8);
            removeElapsedTime(timeSlotesTemp[i].toLowerCase());
        }

public void removeElapsedTime(String elapsedTime) { // elapsedTime = 08:00 pm
        try {
            SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm a");
            Date elapsedDate = dateFormat.parse(elapsedTime);
            String strElapsedDate=dateFormat.format(elapsedDate);

            Calendar calendar = Calendar.getInstance();
            Date currentDate = calendar.getTime();
            String calculatedDate = dateFormat.format(currentDate);
            if (new Date(strElapsedDate).compareTo(new Date(calculatedDate))<0) {
                finalTimeSlotes.remove(elapsedTime);
            }
             else if (new Date(strElapsedDate).compareTo(new Date(calculatedDate))>0) {
                finalTimeSlotes.add(elapsedTime);
            }

        } catch (Exception e) {
            Log.e(TAG, "" + e);
        }
    }

我在比较时间时得到java.lang.IllegalArgumentException: Parse error: 03:30 pm

【问题讨论】:

    标签: android time compare elapsed


    【解决方案1】:

    你为什么不比较日期对象而不是日期字符串。 这是示例代码。

       public static void removeElapsedTime(String elapsedTime) { // elapsedTime = 08:00 pm
            try {
                Date elapsedDate = getDateFromTimeString(elapsedTime);
                Calendar calendar = Calendar.getInstance();
                Date currentDate = calendar.getTime();
                if (elapsedDate.compareTo(currentDate) < 0) {
                    finalTimeSlotes.remove(elapsedTime);
                } else if (elapsedDate.compareTo(currentDate) > 0) {
                    finalTimeSlotes.add(elapsedTime);
                }
            } catch (Exception e) {
                e.printStackTrace();
                System.err.println("" + e);
            }
            return;
        }
    
        public static Date getDateFromTimeString(String time) {
            String currentDate = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
            SimpleDateFormat df1 = new SimpleDateFormat("dd-MM-yyyy hh:mm a");
            Date date = null;
            try {
                date = df1.parse(currentDate + " " + time);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return date;
        }
    

    编辑:
    java.lang.IllegalArgumentException: Parse error: 03:30 pm 的原因是您只是传递时间字符串来创建新的日期对象。您还需要将日期字符串与时间字符串一起传递。

    【讨论】:

    • @karthikkolanji 新日期(字符串日期)自 JDK 1.1 版起已弃用。所以尽量避免使用它。
    • @karthikkolanji 很高兴为您提供帮助。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多