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

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

Phương thức toLocaleDateString() trả về chuỗi biểu diễn phần ngày (không bao gồm giờ) của đối tượng Date theo định dạng địa phương (locale) của người dùng.

Cú pháp

dateObj.toLocaleDateString([locales[, options]])
  • locales: Tùy chọn, BCP 47 language tag
  • options: Tùy chọn, object cấu hình (chỉ các option liên quan đến date)
  • Trả về: Chuỗi ngày theo locale

Ví dụ cơ bản

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

console.log(date.toLocaleDateString());        // "9/26/1989" (locale mặc định)
console.log(date.toLocaleDateString('vi-VN')); // "26/09/1989" (VN: DD/MM/YYYY)
console.log(date.toLocaleDateString('en-US')); // "9/26/1989" (US: MM/DD/YYYY)
console.log(date.toLocaleDateString('en-GB')); // "26/09/1989" (UK: DD/MM/YYYY)
console.log(date.toLocaleDateString('ja-JP')); // "1989/9/26" (Japan: YYYY/M/D)

Tùy chọn options cho date

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

const options = {
  weekday: 'long',   // "Thứ Ba"
  year: 'numeric',   // "1989"
  month: 'long',     // "Tháng Chín"
  day: 'numeric',    // "26"
  timeZone: 'UTC'    // Hiển thị ngày theo UTC
};

console.log(date.toLocaleDateString('vi-VN', options));
// "Thứ Ba, 26 Tháng Chín 1989"

console.log(date.toLocaleDateString('en-US', options));
// "Tuesday, September 26, 1989"

Ngày hiện tại

const now = new Date();
console.log(now.toLocaleDateString('vi-VN')); // "25/10/2018" (ví dụ)

So sánh các phương thức date-only

MethodOutput (vi-VN)TimezoneCustomizable
toLocaleDateString()"26/09/1989"LocalCó (options)
toDateString()"Thứ 3, 26 Thg 9 1989"LocalKhông
toISOString().split('T')[0]"1989-09-26"UTCKhông
toLocaleDateString(undefined, {timeZone:'UTC'})"26/09/1989"UTCCó

Ứng dụng

  • Hiển thị ngày sinh, ngày đăng ký, ngày hết hạn
  • Báo cáo, filter theo ngày (chỉ cần date, không cần time)
  • Form input type="date" value formatting
  • i18n: tự động DD/MM/YYYY vs MM/DD/YYYY vs YYYY/MM/DD

Lưu ý

  • Chỉ trả về phần ngày, bỏ qua giờ/phút/giây
  • options không hỗ trợ hour/minute/second (sẽ bị bỏ qua)
  • Hiệu năng tốt hơn toLocaleString() khi chỉ cần ngày
  • Kết quả phụ thuộc locale data của hệ thống
  • Cặp đôi với toLocaleTimeString() cho datetime tách biệt