2011-04-15 40 views

Respuesta

3

Tenga en cuenta que las cadenas de fecha UTC se pueden comparar lexicográficamente, como cadenas, ya que los valores de orden superior aparecen a la izquierda de la cadena.

var s1 = '2011-03-29 17:06:21 UTC' 
    , s2 = '2001-09-09 01:46:40 UTC'; 
s1 > s2; // => true 
s2 > s1; // => false 

puede extraer los campos de la fecha de su ejemplo de cadena y devuelve el número de milisegundos usando el método Date.UTC:

var getEpochMillis = function(dateStr) { 
    var r = /^\s*(\d{4})-(\d\d)-(\d\d)\s+(\d\d):(\d\d):(\d\d)\s+UTC\s*$/ 
    , m = (""+dateStr).match(r); 
    return (m) ? Date.UTC(m[1], m[2]-1, m[3], m[4], m[5], m[6]) : undefined; 
}; 
getEpochMillis('2011-03-29 17:06:21 UTC'); // => 1301418381000 
getEpochMillis('2001-09-09 01:46:40 UTC'); // => 1000000000000 
+1

¿Por qué el voto a favor? – maerics

+0

+1 por elegancia, pero Date.parse devuelve NaN en Safari 4.1. Funciona bien en Firefox 3.6. –

+2

@Vik David: gracias por el heads-up de Safari; Actualicé mi respuesta para usar el método UTC como se define en ECMA-262 5th Edition, que debería ser mejor soportado. El análisis de la fecha es un problema en JavaScript ... – maerics

1

El uso de datejs lo ayudará a convertir la cadena UTC a un objeto Date. Después de eso, es simplemente una cuestión de llamar a .getTime() en el objeto de fecha para obtener los milisegundos.

+0

¿Cómo harías exactamente esto? He incluido date.js lib y he intentado con una nueva fecha ("2011-03-29 17:06:21 UTC") y Date.parse ("2011-03-29 17:06:21 UTC") pero han resultado inválidos o Yaya. – katsuya

0

Usted podría utilizar getDateFromFormat(dateValue, dateFormat)(available here) así:

getDateFromFormat("2011-03-29 17:06:21","yyyy-MM-dd HH:mm:ss") 

Devuelve el tiempo en milisegundos época.

1

esto es cómo hacerlo. No es inepto Date.UTC acepta una marca de tiempo UTC y devuelve época

var epoch_date = Date.UTC(year,mon,day,hours,min,sec,milisec); 
Cuestiones relacionadas