Проверка времени


Я пытаюсь проверить время записи. ArrTime - это время, введенное пользователем в пользовательском интерфейсе. Я пытаюсь сделать так, что когда пользователь пытается добавить время, она должна быть между 8:45 и 17:30. Есть ли что не так с моим кодом? Я не очень силен в JavaScript, так что я чувствую это, но если вы можете помочь мне буду очень благодарна.

Здесь представлены все части кода, которые участвуют в проверке:

В JavaScript

  timeValid: function () {
    var s = $(this).val();

    if ($(this).required()) {
        var arrTime = new ArrTime(s);

        var startTime = new Date(0001, 01, 01, 08, 46, 00, 00);
        var endTime = new Date(9999, 12, 366, 17, 30, 00, 00);

        if (arrTime > startTime) {
            $(this).removeClass("error");
            return true;
        }
        else {
            validation.showError("Invalid", $(this).attr("name"));
            $(this).addClass("error");
        }

        if (!isNaN(arrTime)) {
            if (arrTime >= ArrTime.parse(new ArrTime().toTimeString())) {
                $(this).removeClass("error");
                return true;
            }
            else {
                validation.showError("Invalid", $(this).attr("name"));
                $(this).addClass("error");
                return false;
            }
        }
        else {
            validation.showError("Required", $(this).attr("name"));
            $(this).addClass("error");
            return false;
        }
    }
    else return false;
},

В JavaScript

var deferrend = $.Deferred();

    if (new Date(dateTo) > new Date()) {
        deferrend = confirmation.ask("Are you sure you want to add a future absence?");
    } else {
        deferrend.resolveWith(true);
    }

    if (new Date(arrTime) > new Date()) {
        deferrend = confirmation.ask("Are you sure this is the correct time for being late?");
    }
    else {
        deferrend.resolveWith(true);
    }

В C#

public static bool IsValidTime(this string s, out string error)
    {
        error = String.Empty;

        if (s.Required())
        {
            TimeSpan outTime;
            TimeSpan startTime = new TimeSpan(8, 46, 0);
            TimeSpan endTime = new TimeSpan(17, 30, 0);

            if (TimeSpan.TryParse(s, out outTime))
                if (outTime >= startTime && outTime <= endTime)
                    return true;
                else
                {
                    error = "Invalid";
                    return false;
                }
        }
        else
        {
            error = "Required";
            return false;
        }

        return false;
    }
}

В JavaScript

    if (new Date(arrTime) > new Date()) {
        deferrend = confirmation.ask("Are you sure this is the correct time for being late?");
    }
    else {
        deferrend.resolveWith(true);
    }


1485
2
задан 22 ноября 2011 в 03:11 Источник Поделиться
Комментарии
1 ответ

Я бы рефакторинг концептуально и ввести многоразовые TimeRange объект с методами проверки включения:

class TimeRange : Range<DateTime>{

bool Includes(DateTime other){...}
bool Includes(TimeRange other){...}
bool Includes(string other){...}

}

В этом случае, если включает возвращает значение false, у вас ошибка проверки.

1
ответ дан 24 ноября 2011 в 01:11 Источник Поделиться