如何将日期对象数据存储到字符串中



我是NodeJS和mongoDB的新手,我在打印Date对象的值时创建了一个变量,它打印这个

2021-08-06T00:00:00.000+00:00

并以这种格式存储在数据库中。但我想像这个2021-08-06一样存储它。我试着这样

var date = new Date().toISOString();
date1 = date.substring(0, 10);
console.log("date")
console.log(date1);

它的输出是这个

date
2021-08-06

当我把这个变量传递到日期字段时,就像这个

document.Date = date1;

它以2021-08-06T00:00:00.000+00:00的形式插入数据库

请帮助解决此问题。

它以这种格式插入数据库2021-08-06T000:00:00.000+000:00

实际上,像{_id:ObjectId(), dt: Date("2021-08-06")这样的文档是以这种格式插入数据库的(请参阅bsonspec.org):

00000000: 2200 0000 075f 6964 0061 0dd3 1dfd af14  "...._id.a......
00000010: db18 d4f9 6109 6474 0000 6cc2 187b 0100  ....a.dt..l..{..
00000020: 0000

那里的日期值是64位整数:

hex: 0x000017b18c26c00
decimal: 1628208000000

这也是MongoDB服务器返回给您正在使用的任何客户端程序的格式。

Node.js驱动程序识别出这是一个日期类型,因此可以使用Date构造函数来帮助反序列化该值,例如:

new Date(1628208000000)

从REPL中尝试一下,你会发现实际上是Node提供了你所看到的格式:

从mongo外壳来看,这看起来像:

> new Date(1628208000000)
ISODate("2021-08-06T00:00:00Z")

JSON没有日期类型,因此转换会导致该值变成字符串:

> tostrictjson({dt:new Date(1628208000000)})
{ "dt" : { "$date" : "2021-08-06T00:00:00.000-00:00" } }

同样,产生您所看到的格式的是客户端,而不是数据库。

如果您需要以特定格式显示日期,请使用日期格式库,如Datejs、Moment.js、Luxon等。

相关内容

  • 没有找到相关文章

最新更新