Intl.DateTimeFormat
Intl.DateTimeFormat
对象启用语言敏感的日期和时间格式。
¥The Intl.DateTimeFormat
object enables language-sensitive date and time formatting.
Try it
构造函数
静态方法
实例属性
¥Instance properties
这些属性在 Intl.DateTimeFormat.prototype
上定义并由所有 Intl.DateTimeFormat
实例共享。
¥These properties are defined on Intl.DateTimeFormat.prototype
and shared by all Intl.DateTimeFormat
instances.
Intl.DateTimeFormat.prototype.constructor
-
创建实例对象的构造函数。对于
Intl.DateTimeFormat
实例,初始值为Intl.DateTimeFormat
构造函数。 Intl.DateTimeFormat.prototype[Symbol.toStringTag]
-
[Symbol.toStringTag]
属性的初始值为字符串"Intl.DateTimeFormat"
。该属性在Object.prototype.toString()
中使用。
实例方法
¥Instance methods
Intl.DateTimeFormat.prototype.format()
-
根据此
DateTimeFormat
对象的区域设置和格式选项来格式化日期的 getter 函数。 Intl.DateTimeFormat.prototype.formatRange()
-
此方法接收两个 日期,并根据实例化
DateTimeFormat
时提供的区域设置和选项,以最简洁的方式格式化日期范围。 Intl.DateTimeFormat.prototype.formatRangeToParts()
-
此方法接收两个 日期 并返回一个对象数组,其中包含表示格式化日期范围的每个部分的特定于区域设置的标记。
Intl.DateTimeFormat.prototype.formatToParts()
-
返回
Array
个对象,这些对象表示可用于自定义区域设置感知格式的部分中的日期字符串。 Intl.DateTimeFormat.prototype.resolvedOptions()
-
返回一个新对象,其属性反映了在对象初始化期间计算的区域设置和格式选项。
示例
使用日期时间格式
¥Using DateTimeFormat
在不指定区域设置的基本使用中,DateTimeFormat
使用默认区域设置和默认选项。
¥In basic use without specifying a locale, DateTimeFormat
uses the default locale and default options.
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
// toLocaleString without arguments depends on the implementation,
// the default locale, and the default time zone
console.log(new Intl.DateTimeFormat().format(date));
// "12/19/2012" if run with en-US locale (language) and time zone America/Los_Angeles (UTC-0800)
使用语言环境
¥Using locales
此示例显示本地化日期和时间格式的一些变化。为了获取应用用户界面中使用的语言的格式,请确保使用 locales
参数指定该语言(可能还有一些后备语言):
¥This example shows some of the variations in localized date and time formats. In order to get the format of the language used in the user interface of your application, make sure to specify that language (and possibly some fallback languages) using the locales
argument:
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
// Results below use the time zone of America/Los_Angeles (UTC-0800, Pacific Standard Time)
// US English uses month-day-year order
console.log(new Intl.DateTimeFormat("en-US").format(date));
// "12/19/2012"
// British English uses day-month-year order
console.log(new Intl.DateTimeFormat("en-GB").format(date));
// "19/12/2012"
// Korean uses year-month-day order
console.log(new Intl.DateTimeFormat("ko-KR").format(date));
// "2012. 12. 19."
// Arabic in most Arabic speaking countries uses real Arabic digits
console.log(new Intl.DateTimeFormat("ar-EG").format(date));
// "١٩/١٢/٢٠١٢"
// for Japanese, applications may want to use the Japanese calendar,
// where 2012 was the year 24 of the Heisei era
console.log(new Intl.DateTimeFormat("ja-JP-u-ca-japanese").format(date));
// "24/12/19"
// when requesting a language that may not be supported, such as
// Balinese, include a fallback language, in this case Indonesian
console.log(new Intl.DateTimeFormat(["ban", "id"]).format(date));
// "19/12/2012"
使用选项
¥Using options
可以使用 options
参数自定义日期和时间格式:
¥The date and time formats can be customized using the options
argument:
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0, 200));
// request a weekday along with a long date
let options = {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric",
};
console.log(new Intl.DateTimeFormat("de-DE", options).format(date));
// "Donnerstag, 20. Dezember 2012"
// an application may want to use UTC and make that visible
options.timeZone = "UTC";
options.timeZoneName = "short";
console.log(new Intl.DateTimeFormat("en-US", options).format(date));
// "Thursday, December 20, 2012, GMT"
// sometimes you want to be more precise
options = {
hour: "numeric",
minute: "numeric",
second: "numeric",
timeZone: "Australia/Sydney",
timeZoneName: "short",
};
console.log(new Intl.DateTimeFormat("en-AU", options).format(date));
// "2:00:00 pm AEDT"
// sometimes you want to be very precise
options.fractionalSecondDigits = 3; //number digits for fraction-of-seconds
console.log(new Intl.DateTimeFormat("en-AU", options).format(date));
// "2:00:00.200 pm AEDT"
// sometimes even the US needs 24-hour time
options = {
year: "numeric",
month: "numeric",
day: "numeric",
hour: "numeric",
minute: "numeric",
second: "numeric",
hour12: false,
timeZone: "America/Los_Angeles",
};
console.log(new Intl.DateTimeFormat("en-US", options).format(date));
// "12/19/2012, 19:00:00"
// to specify options but use the browser's default locale, use undefined
console.log(new Intl.DateTimeFormat(undefined, options).format(date));
// "12/19/2012, 19:00:00"
// sometimes it's helpful to include the period of the day
options = { hour: "numeric", dayPeriod: "short" };
console.log(new Intl.DateTimeFormat("en-US", options).format(date));
// 10 at night
使用的日历和编号格式也可以通过 options
参数独立设置:
¥The used calendar and numbering formats can also be set independently via options
arguments:
const options = { calendar: "chinese", numberingSystem: "arab" };
const dateFormat = new Intl.DateTimeFormat(undefined, options);
const usedOptions = dateFormat.resolvedOptions();
console.log(usedOptions.calendar);
// "chinese"
console.log(usedOptions.numberingSystem);
// "arab"
console.log(usedOptions.timeZone);
// "America/New_York" (the users default timezone)
规范
Specification |
---|
ECMAScript Internationalization API Specification # datetimeformat-objects |
浏览器兼容性
BCD tables only load in the browser