从 Mongodb 格式化 ISODate

IT技术 javascript node.js mongodb isodate
2021-02-23 22:25:36

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

看起来像这样

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

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

Time : 01:00

我正在使用 momentjs 来简化此操作,但据我所知,momentjs 似乎确实支持 ISODate 格式。

谢谢你的帮助。

4个回答

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

我使用 momentjs 进行格式化,但必须通过 getFullYear、getMonth、getDate、getHours 和 getMinutes 首先按照您所说的从日期对象中提取它。
2021-05-15 22:25:36
不要使用 Date 构造函数解析字符串,它在实现之间非常不一致。虽然 ES5 中指定了 ISO 格式,但并非所有使用的浏览器都支持它,并且它们的处理方式也不一致。例如,“2012-07-14T01:00:00+01:00”应解析为本地字符串(即使用系统时区设置),但“2012-07-14”应解析为UTC。
2021-05-15 22:25:36

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

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

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

在此处输入图片说明

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