Intl.DateTimeFormat
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.
Đối tượng Intl.DateTimeFormat cho phép định dạng ngày và giờ nhạy cảm ngôn ngữ.
Try it
const date = new Date(Date.UTC(2020, 11, 20, 3, 23, 16, 738));
// Results below assume UTC timezone - your results may vary
// Specify default date formatting for language (locale)
console.log(new Intl.DateTimeFormat("en-US").format(date));
// Expected output: "12/20/2020"
// Specify default date formatting for language with a fallback language (in this case Indonesian)
console.log(new Intl.DateTimeFormat(["ban", "id"]).format(date));
// Expected output: "20/12/2020"
// Specify date and time format using "style" options (i.e. full, long, medium, short)
console.log(
new Intl.DateTimeFormat("en-GB", {
dateStyle: "full",
timeStyle: "long",
timeZone: "Australia/Sydney",
}).format(date),
);
// Expected output: "Sunday, 20 December 2020 at 14:23:16 GMT+11"
Constructor
Intl.DateTimeFormat()-
Tạo một đối tượng
Intl.DateTimeFormatmới.
Phương thức tĩnh
Intl.DateTimeFormat.supportedLocalesOf()-
Trả về một mảng chứa các ngôn ngữ được hỗ trợ trong số các ngôn ngữ đã cung cấp mà không cần phải quay lại ngôn ngữ mặc định của runtime.
Thuộc tính instance
Các thuộc tính này được định nghĩa trên Intl.DateTimeFormat.prototype và được chia sẻ bởi tất cả các instance Intl.DateTimeFormat.
Intl.DateTimeFormat.prototype.constructor-
Hàm constructor đã tạo ra đối tượng instance. Đối với các instance
Intl.DateTimeFormat, giá trị khởi tạo là constructorIntl.DateTimeFormat. Intl.DateTimeFormat.prototype[Symbol.toStringTag]-
Giá trị khởi tạo của thuộc tính
[Symbol.toStringTag]là chuỗi"Intl.DateTimeFormat". Thuộc tính này được dùng trongObject.prototype.toString().
Phương thức instance
Intl.DateTimeFormat.prototype.format()-
Hàm getter định dạng một ngày theo ngôn ngữ và các tùy chọn định dạng của đối tượng
DateTimeFormatnày. Intl.DateTimeFormat.prototype.formatRange()-
Phương thức này nhận hai đối tượng Date và định dạng khoảng thời gian theo cách ngắn gọn nhất dựa trên ngôn ngữ và tùy chọn được cung cấp khi khởi tạo
DateTimeFormat. Intl.DateTimeFormat.prototype.formatRangeToParts()-
Phương thức này nhận hai đối tượng Date và trả về một mảng các đối tượng chứa các token đặc thù theo ngôn ngữ biểu diễn từng phần của khoảng thời gian được định dạng.
Intl.DateTimeFormat.prototype.formatToParts()-
Trả về một
Arraycác đối tượng biểu diễn chuỗi ngày theo từng phần, có thể dùng để tạo định dạng tùy chỉnh theo ngôn ngữ. Intl.DateTimeFormat.prototype.resolvedOptions()-
Trả về một đối tượng mới với các thuộc tính phản ánh các tùy chọn ngôn ngữ và định dạng được tính toán trong quá trình khởi tạo đối tượng.
Ví dụ
>Sử dụng DateTimeFormat
Khi sử dụng cơ bản mà không chỉ định ngôn ngữ, DateTimeFormat sử dụng ngôn ngữ mặc định và các tùy chọn mặc định.
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)
Sử dụng locales
Ví dụ này cho thấy một số biến thể trong các định dạng ngày và giờ được bản địa hóa. Để có định dạng của ngôn ngữ được dùng trong giao diện người dùng của ứng dụng, hãy đảm bảo chỉ định ngôn ngữ đó (và có thể một số ngôn ngữ dự phòng) bằng cách sử dụng đối số locales:
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"
Sử dụng options
Định dạng ngày và giờ có thể được tùy chỉnh bằng cách sử dụng đối số options:
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
Lịch và hệ thống đánh số được sử dụng cũng có thể được đặt độc lập thông qua đối số options:
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)
Đặc tả kỹ thuật
| Specification |
|---|
| ECMAScript® 2026 Internationalization API Specification> # datetimeformat-objects> |
Tương thích trình duyệt
Xem thêm
- Polyfill của
Intl.DateTimeFormattrong FormatJS IntlDate.prototype.toLocaleString()Date.prototype.toLocaleDateString()Date.prototype.toLocaleTimeString()Temporal.Instant.prototype.toLocaleString()Temporal.PlainDate.prototype.toLocaleString()Temporal.PlainDateTime.prototype.toLocaleString()Temporal.PlainTime.prototype.toLocaleString()Temporal.PlainYearMonth.prototype.toLocaleString()Temporal.PlainMonthDay.prototype.toLocaleString()Temporal.ZonedDateTime.prototype.toLocaleString()