【问题标题】:how to format date pulled from database(inserted as new Date() )如何格式化从数据库中提取的日期(插入为 new Date() )
【发布时间】:2021-09-24 15:28:13
【问题描述】:

我不太确定将日期插入数据库的正确方法是什么,但我使用的是new Date()

所以当我从数据库中查询时,我会得到这样的日期格式:

2021-09-24T12:38:54.656Z

现在我意识到日期格式不是那么用户友好。因此,如果可能的话,我会尝试将其转换为像这样的标准可读格式:

Sept 25 2015, 8:00 PM

我尝试使用toLocaleString() 来从数据库中提取日期,但如果我正确地从数据库中提取的日期已经是一个字符串,它可能无法正常工作?

是否有解决方法,这样我就不需要更改我在数据库中输入日期的方式?

【问题讨论】:

  • 这能回答你的问题吗? Converting a string to a date in JavaScript
  • 我已经从数据库中提取了日期,例如 2021-09-24T12:38:54.656Z。所以是需要再次转换为日期的字符串?
  • 哦,所以当我在 new Date() 中包含我的日期时,我得到了类似这样的信息 2021 年 9 月 24 日星期五 22:22:23 GMT+0800(中国标准时间)。我想我只需要努力删除像中国标准时间这样的额外元素

标签: javascript node.js mongodb date


【解决方案1】:

const date = moment("2021-09-24T12:38:54.656Z").format('MMM D YYYY, h:mm a')
console.log(date)
<script src="https://momentjs.com/downloads/moment.min.js"></script>

使用momentjs

您可以找到格式方法并根据需要应用

https://momentjs.com/

【讨论】:

  • 谢谢。让我试试这个。所以我想我仍然需要一些第三方包
  • JS Date 对象有内置的日期格式化功能。如果这些功能不符合您的要求,请使用诸如 moment.js 之类的外部库。
【解决方案2】:

我认为最好将 UTC 00 值存储在 DB 中,而您现在正在这样做。

当您检索它时,您将获得一个类似于2021-09-24T12:38:54.656Z 的字符串值。在 UI 上,您可以使用 JS 轻松地将其转换为日期变量,

const dateVar = new Date("2021-09-24T12:38:54.656Z");
console.log(dateVar.toLocaleString());

如果您想要更多的日期格式而不是像 toLocaleString 这样的内置解决方案,您可以使用像 moment.js 这样的日期库

【讨论】:

  • 哦,谢谢。我现在明白了。因此,如果我只使用 new Date() 将日期插入数据库以插入当前日期并尝试输出它,我需要再次使用新日期到该日期字符串,然后使用 toLocaleString。
  • 一般来说,当您从数据库中返回 JSON 格式的数据时,您会得到它作为字符串变量。所以需要转换成JS Date 变量来获取Date对象函数。
【解决方案3】:

您需要像这样从时间戳字符串创建一个 Date 对象。

let date = new Date('2021-09-24T12:38:54.656Z');

然后,您可以根据需要使用 toLocaleString、toLocaleDateString、toDateString 或 toString。

【讨论】:

  • 是的,我想这就是我所需要的。一开始我很困惑,因为我也使用 new Date() 将日期插入到数据库中。从没想过我需要再次将相同的日期转换为标准日期格式。我可以接受 toLocaleString 的格式
猜你喜欢
  • 1970-01-01
  • 2019-01-27
  • 2017-05-23
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-03
  • 1970-01-01
相关资源
最近更新 更多