Я хочу проверить формат даты на входе, используя формат mm/dd/yyyy
.
Я нашел ниже коды на одном сайте, а затем использовал его, но он не работает:
function isDate(ExpiryDate) {
var objDate, // date object initialized from the ExpiryDate string
mSeconds, // ExpiryDate in milliseconds
day, // day
month, // month
year; // year
// date length should be 10 characters (no more no less)
if (ExpiryDate.length !== 10) {
return false;
}
// third and sixth character should be '/'
if (ExpiryDate.substring(2, 3) !== '/' || ExpiryDate.substring(5, 6) !== '/') {
return false;
}
// extract month, day and year from the ExpiryDate (expected format is mm/dd/yyyy)
// subtraction will cast variables to integer implicitly (needed
// for !== comparing)
month = ExpiryDate.substring(0, 2) - 1; // because months in JS start from 0
day = ExpiryDate.substring(3, 5) - 0;
year = ExpiryDate.substring(6, 10) - 0;
// test year range
if (year < 1000 || year > 3000) {
return false;
}
// convert ExpiryDate 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;
}
function checkDate(){
// define date string to test
var ExpiryDate = document.getElementById(' ExpiryDate').value;
// check date and print message
if (isDate(ExpiryDate)) {
alert('OK');
}
else {
alert('Invalid date format!');
}
}
Есть предложения о том, что может быть не так?
javascript
validation
date
матовый
источник
источник
{}
кнопки на панели инструментов. На этот раз я сделал это за тебя. Кроме того , постарайтесь предоставить некоторую информацию о вашей проблеме: а не работа описания является полезным как то исправить это решение.Ответы:
Я думаю, что у Никласа есть правильный ответ на вашу проблему. Кроме того, я думаю, что следующую функцию проверки даты немного легче читать:
источник
parseInt(parts[0], 10)
. В противном случае сентябрьское число09
читается как восьмеричное иЯ бы использовал Moment.js для проверки даты.
Jsfiddle: http://jsfiddle.net/q8y9nbu5/
true
значение для строгого анализа кредита @Andrey Prokhorov, что означаетисточник
Используйте следующее регулярное выражение для проверки:
Это работает для меня MM / dd / yyyy.
источник
Все кредиты принадлежат elian-ebbing
Для ленивых я также предоставляю индивидуальную версию функции для формата гггг-мм-дд .
источник
/^(19|20)\d\d$/
, месяца с/^(0[0-9]|1[0-2])$/
и дня/^(0[1-9]|[12][0-9]|3[01])$/
. Потом сработало спасибо./^\d{4}\-\d{1,2}\-\d{1,2}$/
будет проверять yyyy-mm-dd или yyyy-md как истинное, поэтому оно проверяет только длину, а не каждую отдельную часть даты./^\d{4}\-\d{2}\-\d{2}$/
Вместо этого используйте точную длину гггг-мм-дд без проверки правильности года, месяца и даты .Вы могли бы использовать
Date.parse()
Вы можете прочитать в документации MDN
И проверьте, есть ли результат
Date.parse
isNaNПожалуйста, посмотрите, когда рекомендуется использовать
Date.parse
в MDNисточник
Кажется, он отлично работает для дат формата мм / дд / гггг, например:
http://jsfiddle.net/niklasvh/xfrLm/
Единственная проблема, с которой я столкнулся с вашим кодом, заключалась в том, что:
Перед идентификатором элемента был пробел в скобках. Изменил на:
Без каких-либо дополнительных сведений о типе данных, которые не работают, больше не о чем вводить.
источник
Функция вернет истину, если данная строка имеет правильный формат ('ММ / ДД / ГГГГ'), иначе она вернет ложь. (Я нашел этот код в Интернете и немного изменил его)
источник
Вот один фрагмент, который нужно проверить на действительную дату:
источник
Ничего страшного, если вы хотите проверить валидность dd / MM / yyyy
источник
Найдите в приведенном ниже коде, который позволяет выполнять проверку даты для любого из предоставленных форматов для проверки дат начала / от и окончания / до. Могли быть какие-то более подходящие подходы, но я их придумал. Обратите внимание, что формат даты и строка даты идут рука об руку.
Ниже приведен фрагмент HTML
источник
Я взял большую часть этого кода из другого поста, найденного здесь . Я модифицировал его для своих целей. Это хорошо подходит для того, что мне нужно. Это может помочь в вашей ситуации.
источник
Подобен ответу Элиана Эббинга, но поддерживает разделители "\", "/", ".", "-", ""
источник
источник
Момент действительно хороший, чтобы решить эту проблему. Я не вижу смысла добавлять сложности только для проверки даты ... взгляните на момент: http://momentjs.com/
HTML:
Сценарий:
источник
Дата первой строки преобразуется в формат даты js и снова преобразуется в строковый формат, а затем сравнивается с исходной строкой.
источник
источник
Необычно видеть такой старый пост на такую основную тему, с таким количеством ответов, ни один из которых не является правильным. (Я не говорю, что ни один из них не работает.)
Date.parse()
не следует использовать для локальных строк даты. MDN говорит: «Не рекомендуется использовать Date.parse, поскольку до ES5 синтаксический анализ строк полностью зависел от реализации». Стандарт требует (потенциально упрощенной) строки ISO 8601; поддержка любого другого формата зависит от реализации.new Date(string)
использовать, потому что это использует Date.parse ().Вот эффективное и краткое решение без неявных преобразований. Он использует готовность конструктора Date интерпретировать 2018-14-29 как 2019-03-01. Он действительно использует пару современных языковых функций, но при необходимости их легко удалить. Я также включил несколько тестов.
источник
Javascript
JQuery
возвращает истину для допустимой строки даты.
источник
возвращает литерал
'Invalid Date'
для любой недопустимой строки date_string.Примечание. См. Комментарий ниже.
источник
new Date("02-31-2000")
даетThu Mar 02 2000 00:00:00 GMT-0300 (BRT)
.