【问题标题】:How do I format dates from Mongoose in Node.js?如何在 Node.js 中格式化 Mongoose 的日期?
【发布时间】:2011-11-18 13:53:52
【问题描述】:

我正在尝试更改从 Mongo 数据库中获取的日期格式。目前它们看起来像这样:

Fri Sep 16 2011 19:05:17 GMT+0900 (JST)

我试过给他们打电话.toString('yyyy-MM-dd'),但没有任何改变。我不知道它们是 Date 对象还是只是原始字符串。

我已经尝试检查 Mongoose 手册并在谷歌上搜索了一堆,但还没有找到任何东西。

有什么想法吗?

【问题讨论】:

  • 将日期字符串传递给 new Date("Fri Sep 16 2011 19:05:17 GMT+0900").getTime() 然后执行常规日期方法。

标签: javascript date mongodb node.js mongoose


【解决方案1】:

一种现代的方法是使用momentjs,既可以在节点中使用,也可以在浏览器中使用,超级有用且易于使用。对于当前的问题,我在遵循所有文档要求后在节点中解决了这个问题:

var moment = require('moment');
var fomatted_date = moment(photo.date_published).format('YYYY-MM-DD');

photo.date_published 直接来自猫鼬。

【讨论】:

  • YYYY-DD-MM 应该是 YYYY-MM-DD
【解决方案2】:

你必须先创建一个 Date 对象:

var date = new Date(dateStr);  // dateStr you get from mongodb

var d = date.getDate();
var m = date.getMonth()+1;
// ...

【讨论】:

  • var m = date.getMonth() + 1; 将在 12 月 (12) 工作,因为加 1 等于 13,这不是真正的月份?
  • @Sahin JS 月份是基于 0 索引的,这意味着月份看起来像这样:Jan=0 ... Dez=11
【解决方案3】:

如何定义您的架构,例如:

var someSchema = new Schema({
    title: String,
    created: Date
});

s.t.日期在您的 mongoDB 中存储为 Date 对象。因此,当您回读它时,您将拥有一个正确的 Date 对象,您可以在该对象上使用可用的方法。

【讨论】:

  • 这听起来像个疯狂的天才。我得试试看。
  • 你如何验证这一点?比如出生在上个世纪……(?)
【解决方案4】:

只需添加

date: { type: String, default: Date }

输出将是:{ "date": "Sat Nov 28 2020 22:57:38 GMT+0530 (India Standard Time)" }

【讨论】:

    【解决方案5】:

    created_at:{ 类型:日期, 默认值:日期.now } 为当前日期和时间添加这个简单的行

    输出:----- 2021 年 7 月 2 日星期五 10:45:26 GMT+0530(印度标准时间)

    【讨论】:

      猜你喜欢
      • 2019-10-14
      • 2011-12-27
      • 2012-06-26
      • 2020-05-22
      • 2020-10-20
      • 2011-01-31
      • 2014-04-18
      • 2011-06-17
      • 1970-01-01
      相关资源
      最近更新 更多