使用 Vanilla JavaScript 格式化日期时间

发布于 2022-07-28 00:01:17 字数 3459 浏览 161 评论 0

有许多库,例如 moment ,允许您在 JavaScript 中格式化日期。 但是,基本日期格式不需要它们:内置 Date#toLocaleString() 函数 允许您将日期转换为自定义字符串格式,而无需外部库。

介绍 toLocaleString()

toLocaleString()函数有 2 个参数:

  1. 一个字符串 locale表示 日期的高级格式 ,例如 'en-US'或者 'default'.
  2. 一个东西 options包含如何格式化各种日期组件,例如 month或者 minutes. 这是 完整的列表 toLocaleDateString() 选项

这是格式化日期以包含工作日的简短形式和完整日期的示例。

// No 'Z' at the end means JavaScript will use the server's timezone
// as opposed to UTC.
const date = new Date('2019-06-01T00:00:00.000');

// "Sat, June 01, 2019"
date.toLocaleString('en-US', {
  weekday: 'short', // "Sat"
  month: 'long', // "June"
  day: '2-digit', // "01"
  year: 'numeric' // "2019"
});

注意: 不要混淆 toLocaleString()toLocaleDateString()。这 toLocaleDateString() 功能类似于 toLocaleString(),但默认情况下它不包括日期的时间部分。

const date = new Date('2019-06-01T08:00:00.000');

// "6/1/2019, 8:00:00 AM"
date.toLocaleString('en-US');
// "6/1/2019" with no time portion
date.toLocaleDateString();

// But you can still include `hours` and `minutes` using options
// with `toLocaleDateString()`.
date.toLocaleDateString('en-US', {
  month: 'long',
  day: '2-digit',
  year: 'numeric',
  hour: '2-digit'
}); // "June 01, 2019, 8 AM"

时区

toLocaleString() 函数还允许您指定一个时区来格式化日期。支持哪些时区是 特定于实现的 ,因此您不应该依赖命名的时区,如 America/Los_Angeles”或“America/New_York 而不先测试您的环境。 例如,Node.js 从你的 OS 中提取时区数据 ,这意味着你的 Node 进程很可能有时区数据,但这并不是严格保证的。

以下是使用特定时区格式化 UTC 日期的示例, 'America/Denver'

const date = new Date('2019-06-01T08:00:00.000Z');
// "June 01, 2019, 2 AM"
date.toLocaleDateString('en-US', {
  month: 'long',
  day: '2-digit',
  year: 'numeric',
  hour: '2-digit',
  timeZone: 'America/Denver' // 6 hours behind UTC
});

限制

toLocaleString() 函数对于简单的人类可读格式来说已经足够好了,但它没有与 moment

例如, toLocaleString() 没有办法输出日期 YYYYMMDD 格式,例如 2019 年 6 月 1 日的 20190601。您可以在 YYYY-MM-DD,但您必须猜测兼容的语言环境。 没有办法输出 YYYY-MM-DD 使用 'en-US' 语言环境,但您可以使用 'fr-CA' 当地的。

const date = new Date('2019-06-01T00:00:00.000');
// "June 01, 2019, 2 AM"
date.toLocaleDateString('fr-CA', {
  year: 'numeric',
  month: '2-digit',
  day: '2-digit'
});

不幸的是,找出正确的语言环境需要反复试验。 如果您需要比 2019 年 6 月 1 日 更强大的格式,最好使用 moment。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

岁月流歌

暂无简介

0 文章
0 评论
25 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文