Quiero validar el formato de fecha en una entrada usando el formatomm/dd/yyyy
.
Encontré los siguientes códigos en un sitio y luego los usé, pero no funciona:
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!');
}
}
¿Alguna sugerencia sobre qué podría estar mal?
javascript
validation
date
mate
fuente
fuente
{}
botón de la barra de herramientas. Lo he hecho por ti esta vez. Además, intente proporcionar información sobre su problema: una descripción que no funciona es útil como solución y luego solucionarlo.Respuestas:
Creo que Niklas tiene la respuesta correcta a tu problema. Además de eso, creo que la siguiente función de validación de fecha es un poco más fácil de leer:
fuente
parseInt(parts[0], 10)
. De lo contrario, el de septiembre09
se lee como un octal y se analiza a 0Me gustaría utilizar Moment.js para la validación de la fecha.
Jsfiddle: http://jsfiddle.net/q8y9nbu5/
true
El valor es para el crédito de análisis estricto a @Andrey Prokhorov, lo que significafuente
Utilice la siguiente expresión regular para validar:
Esto me funciona para MM / dd / aaaa.
fuente
Todos los créditos van a elian-ebbing
Solo para los perezosos aquí también proporciono una versión personalizada de la función para el formato aaaa-mm-dd .
fuente
/^(19|20)\d\d$/
, el mes con/^(0[0-9]|1[0-2])$/
y el día con/^(0[1-9]|[12][0-9]|3[01])$/
antes de analizar. Entonces funcionó gracias./^\d{4}\-\d{1,2}\-\d{1,2}$/
validará aaaa-mm-dd o aaaa-md como verdadero, por lo tanto, solo valida la longitud, no cada parte de la fecha individual. Para una longitud precisa de aaaa-mm-dd sin comprobar que el año, mes y fecha son correctos, utilice/^\d{4}\-\d{2}\-\d{2}$/
en su lugar.Podrías usar
Date.parse()
Puede leer en la documentación de MDN
Y compruebe si el resultado de
Date.parse
isNaNEche un vistazo cuando se recomienda su uso
Date.parse
en MDNfuente
Parece estar funcionando bien para las fechas de formato mm / dd / aaaa, ejemplo:
http://jsfiddle.net/niklasvh/xfrLm/
El único problema que tuve con su código fue el hecho de que:
Tenía un espacio dentro de los corchetes, antes del ID del elemento. Lo cambió a:
Sin más detalles sobre el tipo de datos que no funcionan, no hay mucho más que aportar.
fuente
La función devolverá verdadero si la cadena dada está en el formato correcto ('MM / DD / AAAA') de lo contrario, devolverá falso. (Encontré este código en línea y lo modifiqué un poco)
fuente
Aquí hay un fragmento para verificar la fecha válida:
fuente
Está bien si desea verificar validar dd / MM / aaaa
fuente
Encuentre en el código a continuación que permite realizar la validación de fecha para cualquiera de los formatos suministrados para validar las fechas de inicio / desde y de finalización / hasta. Podría haber algunos enfoques mejores, pero se les ha ocurrido esto. Tenga en cuenta que el formato de fecha proporcionado y la cadena de fecha van de la mano.
A continuación se muestra el fragmento de HTML
fuente
Saqué la mayor parte de este código de otra publicación que se encuentra aquí . Lo he modificado para mis propósitos. Esto funciona bien para lo que necesito. Puede ayudar con su situación.
fuente
Similar a la respuesta de Elian Ebbing, pero admite delimitadores "\", "/", ".", "-", ""
fuente
fuente
El momento es realmente bueno para resolverlo. No veo razón para agregar complejidad solo para verificar la fecha ... eche un vistazo al momento: http://momentjs.com/
HTML:
Guión:
fuente
La primera fecha de la cadena se convierte al formato de fecha js y se convierte nuevamente en formato de cadena, luego se compara con la cadena original.
fuente
fuente
Es inusual ver una publicación tan antigua sobre un tema tan básico, con tantas respuestas, ninguna de ellas correcta. (No estoy diciendo que ninguno de ellos funcione).
Date.parse()
no debe usarse para cadenas de fecha locales. MDN dice "No se recomienda usar Date.parse ya que hasta ES5, el análisis de cadenas dependía completamente de la implementación". El estándar requiere una cadena ISO 8601 (potencialmente simplificada); el soporte para cualquier otro formato depende de la implementación.new Date(string)
usarse, porque usa Date.parse ().Esta es una solución eficaz y concisa sin conversiones implícitas. Aprovecha la voluntad del constructor de Date para interpretar 2018-14-29 como 2019-03-01. Utiliza un par de funciones de lenguaje moderno, pero se eliminan fácilmente si es necesario. También he incluido algunas pruebas.
fuente
Javascript
JQuery
devuelve verdadero para una cadena de fecha válida.
fuente
devuelve el literal
'Invalid Date'
de cualquier cadena de fecha no válida.Nota: consulte los comentarios a continuación.
fuente
new Date("02-31-2000")
daThu Mar 02 2000 00:00:00 GMT-0300 (BRT)
.