【问题标题】:how to only get the date in this format (year-month-day) or (day-month-year)?如何仅以这种格式(年-月-日)或(日-月-年)获取日期?
【发布时间】:2022-02-23 11:11:22
【问题描述】:

我有 index.ejs 文件来像这样输出书籍对象:


<tbody>
          <% for (let i = 0; i < books.length; i++) { %> 
          <tr>
            <td><%= i+1 %> </td>
            <td><%= books[i].name %> </td>
            <td><%= books[i].author %> </td>
            <td><%= books[i].date %> </td>
            <td>
              <a href="/update-book?id=<%= books[i]._id  %> ">
                <span><i class="fas fa-pencil-alt"></i></span>
              </a>
              <a href="/delete-book?id=<%= books[i]._id %> " >
                <span><i class="fas fa-times"></i></span>
              </a>
            </td>
          </tr>
          <% } %> 
        </tbody>

然后,我使用下面的表格输入所有详细信息并使用发布请求将数据保存在 mongodb 中,包括日期:

      <form action="/api/books" method="POST">
        <div>
          <label for="date">Date</label>
          <input type="date" name="date" value="" placeholder="" />
        </div>
     </form>

数据对象的模式模型如下所示,其中我使用日期类型作为“日期”

var schema = new mongoose.Schema({
  ...
  date: {
    type: Date,
  },
  ...
})

日期保存在数据库中,如下所示:2022-02-22T00:00:00.000Z。

如果我使用 type: String,那么它会像这样保存在数据库中:Tue Feb 22 2022 06:00:00 GMT+0600 (Bangladesh Standard Time)。

但我只想以这种格式保存日期:yyyy/mm/dd

我该怎么做?

【问题讨论】:

  • 是否有令人信服的理由将其保存为yyyy/mm/dd?将 ai 保存为Date 对象有很多优点(过滤、排序、索引等)。从数据库中检索到Date 后可以进行转换。

标签: html node.js mongodb mongoose-schema date-format


【解决方案1】:

好吧,您可以使用$dateToString 聚合管道运算符。 例如,您可能希望以 mm/dd/yyyy 格式返回日期,而不是包含分钟、秒、毫秒等的长 ISODate() 格式

$dateToString 运算符将 Date 对象转换为字符串,并可选择允许您指定结果输出的格式。

让我们在代码中看看: 假设我们有一个名为 cats 的集合,其中包含以下文档:

{ "_id" : 1, "name" : "Scratch", "born" : ISODate("2021-01-03T23:30:15.123Z") }
{ "_id" : 2, "name" : "Meow", "born" : ISODate("2019-12-08T04:00:20.112Z") }
{ "_id" : 3, "name" : "Fluffy", "born" : ISODate("2020-09-24T10:45:01.007Z") }

我们可以使用$dateToString 来返回带有不同格式日期的文档。

我们可以使用 format 参数来格式化日期。这是一个可选参数,允许您使用零个或多个格式说明符来指示日期的格式。

假设我们想要dd/mm/yyyy 格式的日期: 下面是一个将日期转换为dd/mm/yyyy 格式的示例:

db.cats.aggregate(
   [
     {
       $project: {
          _id: 0,
          formattedDate: { $dateToString: { format: "%d/%m/%Y", date: "$born" } }
       }
     }
   ]
)

结果:

{ "formattedDate" : "03/01/2021" }
{ "formattedDate" : "08/12/2019" }
{ "formattedDate" : "24/09/2020" }

您还可以使用$dateToParts 运算符返回一个文档,该文档包含分隔到各自字段中的所有不同日期部分。 我想这回答了你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多