Как вы сравниваете временную часть временной строки? - PullRequest
0 голосов
/ 28 сентября 2011

В моих настройках есть несколько строк, которые представляют время начала и время окончания.

Я написал эту функцию, чтобы определить, находится ли текущее время в пределах времени начала и окончания. Формат строки даты - «ЧЧ: мм». Функция берет строки из настроек.

Я уверен, что мне не хватает некоторого кода для сравнения, потому что мой анализ возвращает что-то вроде этого:

Чт, 29 сентября 12:24:33 ПО ВОСТОЧНОМУ ВРЕМЕНИ 2011

Но все, что мне нужно, это получить: 12: 24

Вот функция. Можете ли вы помочь мне исправить код?

Спасибо.

Действительно, Имад

public static boolean currentTimeIsWithinStartAndEnd(String startTime,
        String endTime) {

    String pattern = "HH:mm";
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    boolean booleanValueToReturn = false;

    try {
        Date startTimeToCompare = sdf.parse(startTime);
        Date endTimeToCompare = sdf.parse(endTime);

        /*
         * These are for the current time in date format.
         */
        Date currentTime = new Date(System.currentTimeMillis());


        Log.w("Emad", "Current Time: " + currentTime + "   Start Time is: "
                + startTimeToCompare + "   End Time is : "
                + endTimeToCompare);



        /*
         * Check if current time is equal or greater than the start time.
         */
        if (currentTime.compareTo(startTimeToCompare) == 0
                || currentTime.compareTo(startTimeToCompare) == 1) {

             booleanValueToReturn = true;

            /*
             * Now check if the current time is equal or less than the end
             * time.
             */
            if (currentTime.compareTo(endTimeToCompare) == 0
                    || currentTime.compareTo(endTimeToCompare) == -1) {

                booleanValueToReturn = true;
            } else {
                 booleanValueToReturn = false;
            }
        } else {
             booleanValueToReturn = false;
        }

    } catch (java.text.ParseException e) {
    }

    return booleanValueToReturn;

1 Ответ

1 голос
/ 28 сентября 2011

Вы используете SimpleDateFormat неправильно.

String pattern = "HH: mm" должен быть формат, в котором указана введенная вами строка даты.иначе как SimpleDateFormat узнает, какая часть представляет что.

Создайте два SimpleDateFormat, f1 (с форматом входной строки) и f2 (с форматом выходной строки);

Используйте f1.parse ()чтобы получить объект Date для входной строки.

Затем используйте f2.format () для этого объекта Date, чтобы получить представление выходной строки.

См. SimpleDateFormat для получения подробной информации о том, какуказать формат даты.

public static boolean currentTimeIsWithinStartAndEnd(String startTime,
        String endTime) {

           // assuming input date string is of format MM/dd/yyyy. Change it according to your needs. 

            String inputPattern = "MM/dd/yyyy";
            String outputPattern = "HH:mm";
            SimpleDateFormat inputFormatter = new SimpleDateFormat(inputPattern);
            SimpleDateFormat outputFormatter = new SimpleDateFormat(outputPattern);

            Date startTimeToCompare = inputFormatter.parse(startTime);
            String dateInRequiredFormat = outputFormat.format(startTimeToCompare);
...