logo
Published on

如何在JavaScript中格式化日期

Authors
  • Name
    Twitter

在JavaScript中,Intl.DateTimeFormat 是一个非常有用且灵活的日期时间格式化工具。以下是使用该工具的一个示例:

var date = new Date();
var options = { year: 'numeric', month: 'short', day: '2-digit'};
var _resultDate = new Intl.DateTimeFormat('en-GB', options).format(date);
// The _resultDate is: "12 Oct 2017"
// Replace all spaces with - and then log it.
console.log(_resultDate.replace(/ /g,'-'));

该代码的结果将是:"12-Oct-2017"

可以使用 options 参数来自定义日期和时间格式。

Intl.DateTimeFormat 对象是一个构造函数,用于创建支持语言敏感的日期和时间格式化对象。

语法

new Intl.DateTimeFormat([locales[, options]])
Intl.DateTimeFormat.call(this[, locales[, options]])

参数

locales

可选。一个包含BCP 47语言标签的字符串,或这些字符串的数组。有关locales参数的详细形式和解释,请参见Intl页。以下Unicode扩展键是允许的:

nu
数字系统。可能的值包括:"arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt"ca
日历。可能的值包括:"buddhist", "chinese", "coptic", "ethioaa", "ethiopic", "gregory", "hebrew", "indian", "islamic", "islamicc", "iso8601", "japanese", "persian", "roc"

options

可选。一个包含下列一些或所有属性的对象:

localeMatcher

要使用的语言环境匹配算法。可能的值是 "lookup""best fit";默认值是 "best fit"。有关此选项的信息,请参见Intl页面。

timeZone

要使用的时区。唯一必须识别的值是 "UTC";默认值是运行时的默认时区。实现可能还会识别IANA时区数据库的时区名称,例如 "Asia/Shanghai""Asia/Kolkata""America/New_York"

hour12

是否使用12小时制时间(而不是24小时制时间)。可能的值是 truefalse;默认值依赖于语言环境。

formatMatcher

要使用的格式匹配算法。可能的值是 "basic""best fit";默认值是 "best fit"

以下属性描述了要在格式化输出中使用的日期时间组件及其所需表示形式。实现至少需要支持以下子集:

weekday, year, month, day, hour, minute, second
weekday, year, month, day
year, month, day
year, month
month, day
hour, minute, second
hour, minute

实现可能支持其他子集,并且会对所有可用的子集表示形式组合进行协商,以找到最佳匹配。对于此协商,有两种算法可供选择:完全指定的 "basic" 算法和实现相关的 "best fit" 算法。

日期时间组件属性

weekday

星期几的表示形式。可能的值是 "narrow""short""long"

era

时代的表示形式。可能的值是 "narrow""short""long"

year

年份的表示形式。可能的值是 "numeric""2-digit"

month

月份的表示形式。可能的值是 "numeric""2-digit""narrow""short""long"

day

日期的表示形式。可能的值是 "numeric""2-digit"

hour

小时的表示形式。可能的值是 "numeric""2-digit"

minute

分钟的表示形式。可能的值是 "numeric""2-digit"

second

秒数的表示形式。可能的值是 "numeric""2-digit"

timeZoneName

时区名称的表示形式。可能的值是 "short""long"

默认情况下,每个日期时间组件属性的值都是未定义的,但如果所有组件属性都未定义,则假定年份、月份和日期为 "numeric"

在线检查

更多详情