Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Phương thức Date.toLocaleString() trong JavaScript

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

OptionGiá 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
hour12true, false12h (AM/PM) vs 24h
timeZoneIANA 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 RangeError cho locale/options không hợp lệ
  • Kết hợp toLocaleDateString() + toLocaleTimeString() cho linh hoạt hơn