Phương thức toLocaleString() trả về chuỗi biểu diễn cả ngày và giờ của đối tượng Date theo định dạng địa phương (locale) của người dùng. Đây là phương thức toàn diện nhất cho hiển thị datetime cho người dùng cuối.
Cú pháp
dateObj.toLocaleString([locales[, options]])
locales: Tùy chọn, BCP 47 language tag (string hoặc array)options: Tùy chọn, object cấu hình chi tiết- Trả về: Chuỗi datetime theo locale
Ví dụ cơ bản
const date = new Date('1989-09-26T12:04:25.096');
console.log(date.toLocaleString()); // "9/26/1989, 12:04:25 PM" (locale mặc định)
console.log(date.toLocaleString('vi-VN')); // "26/09/1989, 12:04:25" (VN: DD/MM/YYYY, 24h)
console.log(date.toLocaleString('en-US')); // "9/26/1989, 12:04:25 PM" (US: MM/DD/YYYY, 12h)
console.log(date.toLocaleString('en-GB')); // "26/09/1989, 12:04:25" (UK: DD/MM/YYYY, 24h)
console.log(date.toLocaleString('ja-JP')); // "1989/9/26 12:04:25" (Japan: YYYY/M/D)
Tùy chọn options nâng cao
const date = new Date('1989-09-26T12:04:25.096');
const options = {
weekday: 'long', // "Thứ Ba", "Tuesday"
year: 'numeric', // "1989"
month: 'long', // "Tháng Chín", "September"
day: 'numeric', // "26"
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: false, // 24h
timeZone: 'UTC', // Hiển thị theo UTC
timeZoneName: 'short'
};
console.log(date.toLocaleString('vi-VN', options));
// "Thứ Ba, 26 Tháng Chín 1989, 05:04:25 UTC"
console.log(date.toLocaleString('en-US', options));
// "Tuesday, September 26, 1989, 05:04:25 UTC"
Các giá trị options chi tiết
| Option | Giá trị | Mô tả |
|---|---|---|
| weekday | 'narrow', 'short', 'long' | Thứ: T2, Thứ 2, Thứ Hai |
| year | 'numeric', '2-digit' | Năm: 1989, 89 |
| month | 'numeric', '2-digit', 'narrow', 'short', 'long' | Tháng: 9, 09, T, Th, Tháng Chín |
| day | 'numeric', '2-digit' | Ngày: 26, 26 |
| hour, minute, second | 'numeric', '2-digit' | Giờ/Phút/Giây |
| hour12 | true, false | 12h (AM/PM) vs 24h |
| timeZone | IANA time zone | 'UTC', 'Asia/Ho_Chi_Minh', 'America/New_York' |
| timeZoneName | 'short', 'long', 'shortOffset', 'longOffset' | Tên múi giờ |
Ngày không hợp lệ
const invalid = new Date('September 467, 1989');
console.log(invalid.toLocaleString()); // "Invalid Date" (hoặc throw RangeError)
Ứng dụng
- Hiển thị datetime đầy đủ cho UI (dashboard, profile, log)
- Đa ngôn ngữ (i18n): tự động format theo ngôn ngữ người dùng
- Chuyển múi giờ hiển thị không cần tính toán thủ công
- Email, notification: format thân thiện
Lưu ý
- Hiệu năng kém hơn
toString()/toISOString() - Kết quả phụ thuộc dữ liệu locale của hệ thống (ICU data)
- Có thể throw
RangeErrorcho locale/options không hợp lệ - Kết hợp
toLocaleDateString()+toLocaleTimeString()cho linh hoạt hơn