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

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

Phương thức setUTCDate() thiết lập ngày trong tháng (1-31) cho đối tượng Date theo thời gian UTC. Trả về timestamp mới.

Cú pháp

dateObj.setUTCDate(day)
  • day: Ngày trong tháng (1-31). 0 hoặc âm có ý nghĩa đặc biệt
  • Trả về: Timestamp mới (number)

Ví dụ cơ bản

const date = new Date('1989-09-26T12:04:25.096Z');
console.log("Trước:", date.toUTCString()); // Tue, 26 Sep 1989 12:04:25 GMT

date.setUTCDate(30);
console.log("Sau:", date.toUTCString());  // Sat, 30 Sep 1989 12:04:25 GMT

Thiếu ngày khi tạo Date

const date = new Date('1989-09T00:04:00Z'); // Tháng 9/1989, ngày 1 mặc định
date.setUTCDate(2);
console.log(date.getUTCDate()); // 2

Ngày hiện tại set ngày UTC

const date = new Date();
date.setUTCDate(2);
console.log("UTC month:", date.getUTCMonth());
console.log("UTC date:", date.getUTCDate());
console.log("UTC year:", date.getUTCFullYear());

Kỹ thuật đặc biệt: setUTCDate(0) = ngày cuối tháng trước

const date = new Date('2024-03-15T00:00:00Z');
date.setUTCDate(0);
console.log(date.toUTCString()); // Thu, 29 Feb 2024 00:00:00 GMT (2024 năm nhuận)

// Hàm lấy ngày cuối tháng UTC
function getLastUTCDate(year, month) { // month 0-based
  return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
}
console.log(getLastUTCDate(2024, 1)); // 29 (Tháng 2/2024)
console.log(getLastUTCDate(2023, 1)); // 28 (Tháng 2/2023)

Auto-normalize vượt phạm vi

const date = new Date('2024-01-15T00:00:00Z');
date.setUTCDate(45); // 45 - 31 = 14 -> 14/2
console.log(date.toISOString()); // 2024-02-14T00:00:00.000Z

date.setUTCDate(-5); // Lùi 5 ngày từ 1/1
console.log(date.toISOString()); // 2023-12-27T00:00:00.000Z

Lưu ý

  • Tham số day là 1-based (1-31)
  • 0 = ngày cuối tháng trước, -1 = ngày倒数第二 tháng trước
  • Vượt phạm vi -> tràn sang tháng sau/năm sau
  • Làm thay đổi object Date gốc
  • Khác với setDate() (local time)
  • Cặp đôi với getUTCDate()