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
RangeErrornếu locale/options không hợp lệ - Cặp đôi với
toLocaleDateString()vàtoLocaleString()