2012-09-14 14 views
11

Cómo valida la marca de tiempo usando javascript y la marca de tiempo para aceptar múltiples formatos p. AAAA-MM-DD HH: mm: ss.S, AAAA-MM-DD HH: mm: ss AM/PM.Cómo validar la marca de tiempo en javascript

+0

http://momentjs.com/ – Andreas

+0

Date.js? vea http://stackoverflow.com/questions/2408202/jquery-datejs-is-there-validation-for-full-date –

+1

Describa "validar". – David

Respuesta

29

puede validar si una cadena es una marca de tiempo válida la siguiente manera:

var valid = (new Date(timestamp)).getTime() > 0; 

var valid = (new Date('2012-08-09')).getTime() > 0; // true 
var valid = (new Date('abc')).getTime() > 0; // false 
+1

+1 "válido" como en lo que el constructor de Fecha puede analizar usando 'Date.parse'. Esto no es necesariamente coherente entre los navegadores. – David

+1

Gracias, sin embargo, si el formato de entrada no es compatible con el analizador, sin embargo, tendrá que convertirse de antemano. –

+1

precaución: Esto devolverá verdadero con una cadena de fecha de '4' que técnicamente es una marca de tiempo válida, pero probablemente no es una fecha válida en el contexto de su aplicación. – Jason

2
var d = Date.parse(your_timestamp); 

d debe ser un número válido y no NaN.

ref: http://www.w3schools.com/jsref/jsref_parse.asp

+2

-1 W3Schoola es horrible, y [Date.parse] (http://ecma-international.org/ecma-262/5.1/#sec-15.9.4.2) depende de la implementación, por lo que es poco confiable. Las cadenas de fecha se deben analizar manualmente. – RobG

+1

¿me puede decir por qué w3schools es horrible y me puede decir un caso por qué Date.parse no es confiable – Srinivas

+0

[w3fools] (http://w3fools.com/) tiene algunas sugerencias. 'Date.parse' dependía completamente de la implementación en ECMA-262 ed 3, en ES5 los navegadores deberían soportar un formato largo ISO8601 modificado (pero algunos no). 'Date.parse ('2012-02-01')' falla en IE <9 y Safari, 'Date.parse ('2012/02/01')' no funciona pero falla en la mayoría de las versiones de Firefox. Algunos no analizarán '01 -02-2012 ', pero analizarán '01/02/2012', todos los tratan como formato de fecha peculiar de los Estados Unidos, independientemente de la configuración del sistema. He abandonado el seguimiento y solo analizo las fechas manualmente. – RobG

0

utilizando new Date().getTime(); se puede hacer esto

y hacer algo como esto

var getDate="12-12-2012"; 
var myDate=getDate.split("-"); 
var getDate=myDate[1]+"/"+myDate[0]+"/"+myDate[2]; 
alert(new Date(getDate).getTime()); 
0

No se puede analizar de forma genérica una cadena de fecha sin saber de antemano lo que el formato es , o al menos, que es uno de un número limitado de formatos.

Si el componente de fecha está siempre en formato ISO8601 (aaaa-mm-dd) y la hora es 24 horas o 12 horas con AM o PM, debería poder dividir fácilmente el tiempo, busque AM o PM, luego trate el tiempo como 12 o 24 horas dependiendo de si está presente o no.

Las zonas horarias deben especificarse como UTC (Z) u horas +/- UTC, las abreviaturas como EST son ambiguas (y no estandarizadas).

0

Todos los números válidos son marcas de tiempo. Si cumple la condición de número entero válido, entonces también cumplirá la condición de la marca de tiempo válida.

Timestamp = El número de milisegundos desde 1970/01/01

Cuestiones relacionadas