Hướng dẫn get date 2 days ago javascript - lấy ngày 2 ngày trước javascript

Có thể trùng lặp: Trừ ngày kể từ ngày trong JavaScript
Subtract days from a date in javascript

Tôi đã có một JavaScript về cơ bản trả lại một ngày là 2 ngày trước. Nó như sau:

var x;
var m_names = new Array("January", "February", "March", 
    "April", "May", "June", "July", "August", "September", 
    "October", "November", "December");

var d = new Date();
var twoDaysAgo = d.getDate()-2;  //change day here
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
var x = twoDaysAgo + "-" + m_names[curr_month] + "-" + curr_year;

document.write(x);

Giả sử hôm nay là 12-tháng 12-2012, những điều trên sẽ trả lại ngày 10 tháng 12 năm 2012. Tôi không nghĩ rằng điều này sẽ hoạt động linh hoạt khi chúng ta tiến lên một tháng mới, hoặc, thay đổi ngày từ -2 thành -15. Nó sẽ chỉ hoạt động từ ngày 3 của tháng.

Làm thế nào tôi có thể sửa đổi điều này vì vậy khi đó là ngày 12 tháng 12 năm 2012 hôm nay và tôi muốn nó trả lại cho tôi ngày 15 ngày trước, nó sẽ là ngày 27 tháng 11 năm 2012 ... và không -3-tháng 12 năm 2012?

Bất kỳ trợ giúp đánh giá cao. Cảm ơn! Tôi là một người mới JavaScript.

Nhận ngày x ngày trước bằng JavaScript #

Để có được ngày x ngày trước, hãy sử dụng phương pháp setDate() để đặt ngày thành ngày hiện tại của tháng trừ đi số ngày, ví dụ: daysAgo.setDate(date.getDate() - numOfDays). Phương pháp setDate() thay đổi ngày trong tháng cho ngày đã cho.

Copied!

function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Sat Jan 15 2022 09:28:20 console.log(getDateXDaysAgo(2, date)); // 👇️ Wed Jan 12 2022 09:28:20 console.log(getDateXDaysAgo(5, date));

Chúng tôi đã tạo ra một hàm có thể tái sử dụng trả về ngày x ngày trước.

Tham số đầu tiên mà hàm mất là số ngày để trừ vào ngày hiện tại trong tháng.

Tham số thứ hai là đối tượng Date để trừ đi số ngày.

Nếu bạn muốn nhận ngày x ngày trước kể từ ngày hiện tại, hãy bỏ qua tham số thứ hai khi gọi hàm.

Copied!

function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Wed Jan 12 2022 09:37:40 console.log(getDateXDaysAgo(5));

Nếu không có đối tượng Date được cung cấp dưới dạng tham số thứ hai, hàm sử dụng ngày hiện tại.

Trong biến

Copied!

function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Sat Jan 15 2022 09:28:20 console.log(getDateXDaysAgo(2, date)); // 👇️ Wed Jan 12 2022 09:28:20 console.log(getDateXDaysAgo(5, date));
0, chúng tôi đã tạo một đối tượng Date mới bằng cách sử dụng dấu thời gian từ Date được cung cấp.

Chúng tôi đã làm điều này bởi vì phương pháp setDate() làm biến đổi Date mà nó được gọi tại chỗ.

Chúng tôi đã sử dụng phương thức setDate () để thay đổi ngày của tháng của ngày x ngày trước.

Lưu ý rằng đối tượng Date trong JavaScript tự động xử lý kịch bản trong đó một tháng (và năm) phải được quay lại.

Đây là một ví dụ về điều đó.

Copied!

function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Fri Dec 31 2021 console.log(getDateXDaysAgo(17, date));

Chúng tôi đã có một ngày 17 ngày trước ngày 17 tháng 1, quay trở lại vào tháng và năm khi tạo đối tượng Date.

Nếu bạn cũng muốn đặt lại thành phần thời gian của ngày đến nửa đêm, bạn có thể sử dụng phương thức

Copied!

function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Sat Jan 15 2022 09:28:20 console.log(getDateXDaysAgo(2, date)); // 👇️ Wed Jan 12 2022 09:28:20 console.log(getDateXDaysAgo(5, date));
7.

Copied!

function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); daysAgo.setHours(0, 0, 0, 0); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Fri Dec 31 2021 00:00:00 console.log(getDateXDaysAgo(17, date));

4 tham số chúng tôi đã chuyển sang phương pháp

Copied!

function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Sat Jan 15 2022 09:28:20 console.log(getDateXDaysAgo(2, date)); // 👇️ Wed Jan 12 2022 09:28:20 console.log(getDateXDaysAgo(5, date));
7 là:

Copied!

function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Sat Jan 15 2022 09:28:20 console.log(getDateXDaysAgo(2, date)); // 👇️ Wed Jan 12 2022 09:28:20 console.log(getDateXDaysAgo(5, date));
9,

Copied!

function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Wed Jan 12 2022 09:37:40 console.log(getDateXDaysAgo(5));
0,

Copied!

function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Wed Jan 12 2022 09:37:40 console.log(getDateXDaysAgo(5));
1 và

Copied!

function getDateXDaysAgo(numOfDays, date = new Date()) { const daysAgo = new Date(date.getTime()); daysAgo.setDate(date.getDate() - numOfDays); return daysAgo; } const date = new Date('2022-01-17'); // 👇️ Wed Jan 12 2022 09:37:40 console.log(getDateXDaysAgo(5));
2.

Điều này có tác dụng để đặt lại thành phần thời gian của ngày đến nửa đêm.