var d = new Date();
d.setMonth(d.getMonth() - 3);
Ini berfungsi untuk Januari. Jalankan cuplikan ini:
var d = new Date("January 14, 2012");
console.log(d.toLocaleDateString());
d.setMonth(d.getMonth() - 3);
console.log(d.toLocaleDateString());
Ada beberapa peringatan ...
Sebulan adalah hal yang aneh. Bagaimana Anda mendefinisikan 1 bulan? 30 hari? Kebanyakan orang akan mengatakan bahwa satu bulan yang lalu berarti hari yang sama bulan pada bulan sebelumnya rujukan . Tetapi lebih dari separuh waktu, yaitu 31 hari yang lalu, bukan 30. Dan jika hari ini adalah tanggal 31 di bulan itu (dan ini bukan Agustus atau Decemeber), hari di bulan itu tidak ada di bulan sebelumnya.
Menariknya, Google setuju dengan JavaScript jika Anda bertanya hari apa satu bulan sebelum hari lain :
Ia juga mengatakan bahwa satu bulan adalah 30,4167 hari :
Jadi, apakah satu bulan sebelum 31 Maret adalah hari yang sama dengan satu bulan sebelum 28 Maret, 3 hari sebelumnya? Ini semua tergantung pada apa yang Anda maksud dengan "satu bulan sebelumnya". Pergi mengobrol dengan pemilik produk Anda.
Jika Anda ingin melakukan seperti saat ini, dan memperbaiki kesalahan hari terakhir bulan ini dengan pindah ke hari terakhir bulan itu, Anda dapat melakukan sesuatu seperti ini:
const d = new Date("March 31, 2019");
console.log(d.toLocaleDateString());
const month = d.getMonth();
d.setMonth(d.getMonth() - 1);
while (d.getMonth() === month) {
d.setDate(d.getDate() - 1);
}
console.log(d.toLocaleDateString());
Jika persyaratan Anda lebih rumit dari itu, gunakan matematika dan tulis beberapa kode. Anda seorang pengembang! Anda tidak perlu menginstal perpustakaan! Anda tidak perlu menyalin dan menempel dari stackoverflow! Anda dapat mengembangkan kode sendiri untuk melakukan tepat apa yang Anda butuhkan!