35

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

看起来像这样

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

使用 nodejs/javascript,我怎样才能显示时间组件,所以我会得到这样的东西

Time : 01:00

我正在使用 momentjs 使这更容易,但据我所知,momentjs 似乎确实支持 ISODate 格式。

谢谢你的帮助。

4

4 回答 4

37

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

于 2012-07-14T22:32:58.640 回答
32

MongoDB 的ISODate()只是一个帮助函数,它包装了一个 JavaScript 日期对象,使处理 ISO 日期字符串变得更容易。

您仍然可以使用与使用普通 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()
于 2012-07-14T23:10:43.980 回答
2

你可以像这样使用mongo查询 yearMonthDayhms: { $dateToString: { format: "%Y-%m-%d-%H-%M-%S", date: {$subtract:["$cdt",14400000] }}}

HourMinute: { $dateToString: { 格式: "%H-%M-%S", 日期: {$subtract:["$cdt",14400000]}}}

在此处输入图像描述

于 2016-08-24T19:15:40.303 回答
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);
于 2017-04-24T06:43:27.060 回答