2012-07-14 78 views
21

在Mongodb中,我使用ISODate格式存储日期和时间。格式化来自Mongodb的ISODate

它看起来像这样

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

使用的NodeJS/JavaScript的,我怎么能显示时间分量,所以我会得到这样的事情

Time : 01:00 

我使用momentjs使它更容易些,但从我可以告诉的是,momentjs确实似乎支持ISODate格式。

感谢您的帮助。

回答

25

JavaScript的Date对象支持ISO日期格式,所以只要你有机会获得日期字符串,你可以这样做:

> 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)' 

如果你想不秒,时间字符串时区,然后您可以调用Date对象上的getHours()和getMinutes()方法,并自己设置时间。

+0

我使用了momentjs来完成格式化,但是必须先通过getFullYear,getMonth,getDate,getHours和getMinutes从日期对象中提取它,就像你说的那样。 – jamjam 2012-07-15 18:26:11

+0

不要使用Date构造函数解析字符串,它在实现中非常不一致。虽然ISO格式是在ES5中指定的,但并非所有使用的浏览器都支持它,并且在处理方式上存在不一致之处。例如。应将“2012-07-14T01:00:00 + 01:00”解析为本地字符串(即使用系统时区设置),但“2012-07-14”应解析为UTC。 – RobG 2016-02-09 21:11:26

28

MongoDB的ISODate()只是一个帮助函数,它封装了一个JavaScript日期对象,使得它更易于使用ISO日期字符串。

,您仍然可以使用所有same methods as working with a normal JS Date,如:

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

可以使用蒙戈这样的查询 yearMonthDayhms:{$ dateToString:{格式为:“%Y-%间%D- %H-%M-%S“,date:{$ subtract:[”$ cdt“,14400000]}}}

HourMinute:{$ dateToString:{format:”%H-%M-%S“日期:{$减: “$ 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);