Как поддерживать формат дат 01.01.2010 и 01.01.2010 с помощью jquery? - PullRequest
0 голосов
/ 06 января 2012

Я использую текстовое поле, чтобы получить дату в своей форме, я использую ниже кодирование jquery для проверки даты (мм / дд / гггг).

function isDate(txtDate) {
    var objDate,  // date object initialized from the txtDate string
        mSeconds, // txtDate in milliseconds
        day,      // day
        month,    // month
        year;     // year
    // date length should be 10 characters (no more no less)
    if (txtDate.length !== 10) {
        return false;
    }
    // third and sixth character should be '/'
    if (txtDate.substring(2, 3) !== '/' || txtDate.substring(5, 6) !== '/') {
        return false;
    }
    // extract month, day and year from the txtDate (expected format is mm/dd/yyyy)
    // subtraction will cast variables to integer implicitly (needed
    // for !== comparing)
    month = txtDate.substring(0, 2) - 1; // because months in JS start from 0
    day = txtDate.substring(3, 5) - 0;
    year = txtDate.substring(6, 10) - 0;
    // test year range
    if (year < 1000 || year > 3000) {
        return false;
    }
    // convert txtDate to milliseconds
    mSeconds = (new Date(year, month, day)).getTime();
    // initialize Date() object from calculated milliseconds
    objDate = new Date();
    objDate.setTime(mSeconds);
    // compare input date and parts from Date() object
    // if difference exists then date isn't valid
    if (objDate.getFullYear() !== year ||
        objDate.getMonth() !== month ||
        objDate.getDate() !== day) {
        return false;
    }
    // otherwise return true
    return true;
}

Это прекрасно работает для формата даты (мм / дд /гггг) .. но теперь мне нужно поддерживать формат как (м / д / гггг).

как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 06 января 2012

Попробуйте библиотеку date.js

С этим вы можете написать код, подобный следующему:

Date.parse('7/1/2004')          // Thu Jul 01 2004

Все синтаксические разборы в Date.js могут быть глобализированывключая файл, содержащий информацию о культуре, так что вы должны быть в состоянии заставить его делать то, что вы хотите.

Все, что вам нужно сделать, это включить следующие файлы на своей странице, чтобы начать:

<script type="text/javascript" src="date.js"></script>
<script type="text/javascript" src="date-de-DE.js"></script>

РЕДАКТИРОВАТЬ

Date.js сейчас кажется мертвым, но Moment.js выглядит хорошей альтернативой.

0 голосов
/ 06 января 2012

Ваш пример с этими модификациями будет поддерживать оба формата:

// date length should be between 8 and 10 characters (no more no less)
if (txtDate.length < 8 || txtDate.length > 10) {
    return false;
}

var tokens = txtDate.split('/');
// there should be exactly three tokens
if (tokens.length !== 3) {
    return false;
}

// extract month, day and year from the txtDate
month = parseInt(tokens[0]) - 1; // because months in JS start from 0
day = parseInt(tokens[1]);
year = parseInt(tokens[2]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...