如何将日期字符串转换为人类可读的格式

Avatar of Sarah Drasner
Sarah Drasner

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费积分!

我得承认,我写这篇文章的部分原因是因为我经常需要用到它,并且希望下次能方便地找到它。使用 JavaScript 格式化从 API 获取的日期字符串可以有很多方式——从加载整个 Moment.js 以实现精确控制,到只用几行代码来更新它。本文并非旨在涵盖所有内容,而是旨在展示最常见的可读性路径。

ISO 8601 是一种非常常见的日期格式。末尾的“Z”表示 ISO 8601 格式的时间使用的是 UTC 标准,即没有时区。以下是一个示例:2020-05-25T04:00:00Z。当从 API 获取数据时,它通常采用 ISO 8601 格式。

如果我想将上面的字符串格式化为更易读的格式,例如 **2020 年 5 月 25 日**,我会这样做

const dateString = '2020-05-14T04:00:00Z'

const formatDate = (dateString) => {
  const options = { year: "numeric", month: "long", day: "numeric" }
  return new Date(dateString).toLocaleDateString(undefined, options)
}

我的操作如下…

首先,我传入我希望输出格式化的选项。我们可以在其中传入 许多其他选项 以不同方式格式化日期。我只展示了一个比较常见的例子。

const options = { year: "numeric", month: "long", day: "numeric" }

接下来,我创建了一个新的 Date 实例,它代表平台独立格式中的某个时间点。

return new Date(dateString)

最后,我使用 .toLocaleDateString() 方法应用格式化选项。

return new Date(dateString).toLocaleDateString(undefined, options)

请注意,我传入的是 undefined。在这种情况下,不定义该值意味着时间将由默认区域设置表示。您也可以将其设置为某个区域/语言。或者,对于国际化的应用程序和网站,您可以传入用户选择的区域设置(例如,美国的 'en-US',德国的 'de-DE' 等等)。有一个不错的 npm 包,其中包含更多区域设置及其代码的列表

希望这能帮助您入门!并且向未来的萨拉致敬,让她不再需要在多个地方查找这个信息。🤚