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

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

Phương thức toLocaleTimeString() trả về chuỗi biểu diễn phần thời gian 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 phù hợp nhất để hiển thị giờ cho người dùng cuối.

Cú pháp

dateObj.toLocaleTimeString([locales[, options]])
  • locales: Tùy chọn, chuỗi hoặc mảng BCP 47 language tag (ví dụ: 'vi-VN', 'en-US', ['en-US', 'en'])
  • options: Tùy chọn, object cấu hình định dạng
  • Trả về: Chuỗi thời gian theo locale

Ví dụ cơ bản

const date = new Date('1989-09-26T12:04:25.096');

console.log(date.toLocaleTimeString());        // "12:04:25 PM" (locale mặc định trình duyệt)
console.log(date.toLocaleTimeString('vi-VN')); // "12:04:25" (24h format Việt Nam)
console.log(date.toLocaleTimeString('en-US')); // "12:04:25 PM" (12h format US)
console.log(date.toLocaleTimeString('ja-JP')); // "12:04:25" (Japan)

Tùy chọn options

const date = new Date('1989-09-26T12:04:25.096');

const options = {
  hour: '2-digit',
  minute: '2-digit',
  second: '2-digit',
  hour12: false,        // 24h format
  timeZone: 'UTC',      // Hiển thị theo UTC
  timeZoneName: 'short' // Hiện tên múi giờ
};

console.log(date.toLocaleTimeString('vi-VN', options)); 
// "12:04:25 UTC" (hoặc "05:04:25 GMT+7" tùy cài đặt)

Các giá trị options phổ biến

  • hour: 'numeric', '2-digit'
  • minute, second: 'numeric', '2-digit'
  • hour12: true (12h AM/PM), false (24h)
  • timeZone: 'UTC', 'Asia/Ho_Chi_Minh', 'America/New_York', v.v.
  • timeZoneName: 'short', 'long', 'shortOffset', 'longOffset'
  • formatMatcher: 'basic', 'best fit' (mặc định)

Ngày không hợp lệ

const invalid = new Date('September 467, 1989');
console.log(invalid.toLocaleTimeString()); // "Invalid Date" (hoặc lỗi tùy engine)

Ngày hiện tại

const now = new Date();
console.log(now.toLocaleTimeString('vi-VN')); // Giờ hiện tại theo format VN

Ứng dụng

  • Hiển thị giờ cho người dùng theo locale của họ
  • Đa ngôn ngữ (i18n): tự động thích ứng format
  • Chuyển múi giờ hiển thị: timeZone: 'America/New_York'
  • Format 12h/24h theo sở thích khu vực

Lưu ý

  • Hiệu năng kém hơn toTimeString() (phức tạp hơn)
  • Kết quả phụ thuộc implementation và dữ liệu locale của OS/browser
  • Có thể ném RangeError nếu locale/options không hợp lệ
  • Cặp đôi với toLocaleDateString() và toLocaleString()