- Published on
如何在JavaScript中格式化日期
- Authors
- Name
在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小时制时间)。可能的值是 true
和 false
;默认值依赖于语言环境。
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"
。