从Mongodb格式化ISODate

时间:2012-07-14 19:28:27

标签: javascript node.js mongodb isodate

在Mongodb中,我以ISODate格式存储日期和时间。

看起来像这样

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

使用nodejs / javascript,如何显示时间组件,以便我得到类似这样的内容

Time : 01:00

我正在使用momentjs来使这更容易,但从我所知道的事情看来似乎支持ISODate格式。

谢谢你的帮助。

4 个答案:

答案 0 :(得分:30)

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 :(得分:27)

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()方法并自己格式化时间。

答案 2 :(得分:1)

你可以像这样使用mongo查询 yearMonthDayhms:{$ dateToString:{格式:“%Y-%m-%d-%H-%M-%S”,日期:{$减法:[“$ cdt”,14400000]}}}

HourMinute:{$ dateToString:{格式:“%H-%M-%S”,日期:{$减法:[“$ cdt”,14400000]}}}

enter image description here

答案 3 :(得分:1)

// 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);