首页 > 解决方案 > 如何在 JavaScript 中使用 Intl.DateTimeFormat 获取基于语言环境的日期格式

问题描述

我想根据给定的本地 ID 获取日期的标准日期格式(如 MM/DD/YYYY)。但下面的代码没有给出格式。请帮助我如何获得日期格式。

var dateFormat = new Intl.DateTimeFormat("as-IN").

标签: javascriptangulartypescriptinternationalization

解决方案


我所做的是首先根据语言环境格式化一个虚拟日期。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当格式输出工作日(例如)、普通话/日语/阿拉伯数字等时,它也将无法正常工作。

可能还有其他一些警告,但对于我的用例来说,这已经足够了;)


推荐阅读