var d = new Date();
d.setMonth(d.getMonth() - 3);
Bu Ocak için geçerli. Bu pasajı çalıştırın:
var d = new Date("January 14, 2012");
console.log(d.toLocaleDateString());
d.setMonth(d.getMonth() - 3);
console.log(d.toLocaleDateString());
Bazı uyarılar var ...
Bir ay tuhaf bir şeydir. 1 ayı nasıl tanımlıyorsunuz? 30 gün? Çoğu kişi, bir ay öncesinin, bir önceki ayın ihtiyaç duyulan ayın aynı günü anlamına geldiğini söyleyecektir . Ancak zamanın yarısından fazlası, yani 30 gün değil, 31 gün önce. Ve eğer bugün ayın 31'iyse (ve Ağustos ya da Aralık değil), ayın o günü önceki ay yok.
İlginç bir şekilde, Google, başka bir günden bir ay önce hangi gün olduğunu sorarsanız JavaScript'i kabul eder :
Ayrıca bir ayın 30.4167 gün uzunluğunda olduğunu söylüyor :
Öyleyse, 31 Mart'tan bir ay önce, 28 Mart'tan önceki bir ay ile 3 gün önce aynı gün mü? Bu, "bir ay önce" derken ne demek istediğine bağlı. Ürün sahibinizle konuşun.
Momentjs'in yaptığı gibi yapmak ve bu ayın son günü hatalarını ayın son gününe geçerek düzeltmek istiyorsanız, şöyle bir şey yapabilirsiniz:
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());
Gereksinimleriniz bundan daha karmaşıksa, biraz matematik kullanın ve biraz kod yazın. Sen bir geliştiricisin! Bir kütüphane kurmanıza gerek yok! Stackoverflow'dan kopyalayıp yapıştırmanız gerekmez! İhtiyacınız olanı tam olarak yapmak için kodu kendiniz geliştirebilirsiniz!