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ố
daylà 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()