javascript - 如何在 JavaScript 中使用 Intl.DateTimeFormat 获取基于语言环境的日期格式
问题描述
我想根据给定的本地 ID 获取日期的标准日期格式(如 MM/DD/YYYY)。但下面的代码没有给出格式。请帮助我如何获得日期格式。
var dateFormat = new Intl.DateTimeFormat("as-IN").
解决方案
我所做的是首先根据语言环境格式化一个虚拟日期。DD
然后我会用标准占位符, MM
,替换不同的日期部分(日、月、年)YYYY
。
这是代码:
/**
* Returns date format used by Intl.DateTimeFormat (for specified `options`).
* Example for Serbia: `DD/MM/YYYY`
*
* **Note** that this will always return the two decimal format for day and month and four for year (e.g. `DD/MM/YYYY`)
*/
export function getIntlDateFormatForLocale(locale: string, options?: Intl.DateTimeFormatOptions) {
const year = 2222
const month = 12
const day = 15
const date = new Date(year, month - 1, day)
const formattedDate = new Intl.DateTimeFormat(locale, options).format(date)
return formattedDate.replace(`${year}`, 'YYYY').replace(`${month}`, 'MM').replace(`${day}`, 'DD')
}
请注意,您从中得到的格式是日期部分的两位数表示。这意味着如果用户设置了一位数的区域设置,则使用此格式将产生两位数的日期部分。
例如:如果用户语言环境输出类似 的日期1/1/2021
,它将被格式化为01/01/2021
使用此函数中的格式时的格式。
Mon
当格式输出工作日(例如)、普通话/日语/阿拉伯数字等时,它也将无法正常工作。
可能还有其他一些警告,但对于我的用例来说,这已经足够了;)
推荐阅读
- powershell - “方法调用失败,因为 [deserialized.system.serviceprocess.servicecontroller] 不包含名为 status 的方法”
- git - Emacs + GPG + pinentry.el 用于身份验证
- laravel-6 - 尽管 laravel 6 中存在路由,但出现 404 错误
- javascript - 使用 useState 更改列表中的活动状态
- c++ - 计算的“goto”是否尊重 C++ 对象的生命周期?
- laravel - Laravel 圣所 vs 护照
- redis - 使用 RedisTemplate 和 GenericJackson2RedisSerializer 读取值时出现序列化错误
- javascript - 未能在两者之间移动元素?
- ios - iOS 富通知:发送 MP4 文件会导致缩略图透明
- android - 如何将 Lottie 库与不支持 AndroidX 的 android 项目集成?