时刻日期格式从 Node 更改为 MongoDB

Posted

技术标签:

【中文标题】时刻日期格式从 Node 更改为 MongoDB【英文标题】:Moment date format changing from Node to MongoDB 【发布时间】:2019-10-13 04:00:07 【问题描述】:

我在node js中创建一个应用程序并将日期保存到Mongo DB,Mongoose的数据类型,我用来保存的是日期。

  moment.locale("pt");
  today= moment().startOf("day").format();

日期打印如2019-05-27T00:00:00-03:00

但是当它正在保存时,我试图检索它来自 mongo db 的日期,例如 2019-05-27T03:00:00.000Z

现在比较不起作用。所以我正在根据这个日期查找数据,但它不起作用。

我正在使用巴西的语言环境。我每天从 00:00 到接下来的 24 小时都保存用户详细信息,并对用户进行幸运抽奖。所以我有一个庞大的数据库,想根据今天的日期过滤数据。所以我需要将日期保存在当地时区,即巴西。

任何帮助将不胜感激。

【问题讨论】:

在通过moment UTC 将日期插入数据库之前如何规范化日期(也使用.valueOf() 来获取毫秒),一旦你输出它们 - 转换为相关的语言环境 你怎么解释? @Aviad,我需要将日期保存在当地时间没有时间,我每天都在做幸运抽奖。 wdym 按“没有时间的本地时间”?只是日期? @Aviad 是的,我每天从 00:00 到接下来的 24 小时都保存用户详细信息,并为用户抽奖。所以我有一个庞大的数据库,想根据今天的日期过滤数据。所以我需要将日期保存在当地时区,即巴西。 【参考方案1】:

我建议转到UTC,然后更改语言环境,然后更改日期以匹配当天的开始,然后存储为 ms:

const d = moment
          .utc() // Get the UTC time
          .locale('pt_BR') // Change locale to Brazil
          .startOf('day') // Go back in time to current date @ 00:00:00
          .valueOf() // Get ms value

// store d in the database

【讨论】:

moment .utc() .locale('pt_BR')``` 不会将语言环境更改为巴西。 也许locale('br') ?

以上是关于时刻日期格式从 Node 更改为 MongoDB的主要内容,如果未能解决你的问题,请参考以下文章

如何从数组更改日期格式

将日期更改为字符串格式

将日期从年/月/日更改为年/月/日

将日期格式更改为 yyyy-mm-dd

在 kibana-7.1.1 中将日期格式从纪元更改为日期

想在AngularJS中将格式从日期时间更改为日期