2012-07-14 130 views
21

En Mongodb estoy almacenando la fecha y la hora en formato ISODate.Formateo de ISODate desde Mongodb

que tiene este aspecto

ISODate("2012-07-14T01:00:00+01:00") 

Usando nodejs/javascript, ¿cómo puedo mostrar el componente de tiempo, así que sería conseguir algo como esto

Time : 01:00 

estoy usando momentjs para hacer esto más fácil, pero por lo que puedo decir, momentjs parece apoyar el formato ISODate.

Gracias por su ayuda.

Respuesta

25

objeto Date de JavaScript compatible con el formato de fecha ISO, por lo que el tiempo que se tiene acceso a la cadena de fecha, puede hacer algo como esto:

> foo = new Date("2012-07-14T01:00:00+01:00") 
Sat, 14 Jul 2012 00:00:00 GMT 
> foo.toTimeString() 
'17:00:00 GMT-0700 (MST)' 

Si desea que la cadena de tiempo sin que los segundos y el zona horaria luego puede llamar a los métodos getHours() y getMinutes() en el objeto Date y formatear la hora usted mismo.

+0

Usé momentjs para hacer el formateo pero tuve que pasar getFullYear, getMonth, getDate, getHours y getMinutes extrayéndolo primero del objeto date como dijiste. – jamjam

+0

No analiza cadenas con el constructor Fecha, es muy inconsistente en todas las implementaciones. Si bien los formatos ISO se especifican en ES5, no todos los navegadores en uso lo admiten, y hay inconsistencias en la forma de tratarlos. P.ej. "2012-07-14T01: 00: 00 + 01: 00" se debe analizar como una cadena local (es decir, utilizando la configuración de zona horaria del sistema), pero "" 2012-07-14 "se debe analizar como UTC. – RobG

28

MongoDB's ISODate() es solo una función auxiliar que envuelve un objeto JavaScript de fecha y facilita el trabajo con cadenas de fechas ISO.

todavía se puede utilizar toda la same methods as working with a normal JS Date, tales como:

ISODate("2012-07-14T01:00:00+01:00").toLocaleTimeString() 

// Note that getHours() and getMinutes() do not include leading 0s for single digit #s 
ISODate("2012-07-14T01:00:00+01:00").getHours() 
ISODate("2012-07-14T01:00:00+01:00").getMinutes() 
1

puede utilizar como consulta mongo esta yearMonthDayhms: {$ dateToString: {formato: "% Y-% m-% d- % H-% M-% S ", fecha: {$ restar: [" $ cdt ", 14400000]}}}

HoraMinute: {$ dateToString: {format:"% H-% M-% S " , fecha: {$ restar: [ "$ CDT", 14400000]}}}

enter image description here

0
// from MongoDate object to Javascript Date object 

var MongoDate = {sec: 1493016016, usec: 650000}; 
var dt = new Date("1970-01-01T00:00:00+00:00"); 
    dt.setSeconds(MongoDate.sec);