2009-03-03 5 views
19

Пожалуйста, разделите код, чтобы найти первую дату предыдущего месяца с текущей даты в JavaScript. Например, если текущая дата - 25 января 2009 года, я должен получить результат 1 декабря 2008 года.Получение первой даты предыдущего месяца с текущей даты в JavaScript

+0

Возможные дублируют [Найти первый день предыдущего месяца в JavaScript] (http://stackoverflow.com/questions/605113/ find-first-day-of-previous-month-in-javascript) –

+0

Проверьте это: http://stackoverflow.com/questions/605113/find-first-day-of-previous-month-in-javascript – Learning

ответ

3

Проверить эту ссылку:

http://blog.dansnetwork.com/2008/09/18/javascript-date-object-adding-and-subtracting-months/

EDIT: Я барабанил пример:

Date.prototype.SubtractMonth = function(numberOfMonths) { 
var d = this; 
d.setMonth(d.getMonth() - numberOfMonths); 
d.setDate(1); 
return d; 
} 

$(document).ready(function() { 
    var d = new Date(); 
    alert(d.SubtractMonth(1)); 
}); 

Эндрю

+0

Привет, Андрей , решение, которое вы сказали, возвращает 30 дней назад с текущей даты. Мне нужна первая дата предыдущего месяца, независимо от даты в текущем месяце. – 2009-03-03 08:50:23

+0

спасибо, чувак !!!! У меня есть – 2009-03-03 09:07:12

+0

Ссылка не работает :( –

49

достаточно прямолинейно, с date methods:

var x = new Date(); 
    x.setDate(1); 
    x.setMonth(x.getMonth()-1); 
+0

за исключением того, что он промахивается, когда меняется год? – Learning

+1

Нет, он будет автоматически настраивать дату –

+1

Вот почему вы делаете это с использованием методов родной даты, а не занимаетесь своим собственным арифметическим календарем. love JS :) – annakata

2

предложения с обновлением года при движении с января по декабрь

var prevMonth = function(dateObj) { 
 
\t var tempDateObj = new Date(dateObj); 
 

 
\t if(tempDateObj.getMonth) { 
 
\t \t tempDateObj.setMonth(tempDateObj.getMonth() - 1); 
 
\t } else { 
 
\t \t tempDateObj.setYear(tempDateObj.getYear() - 1); 
 
\t \t tempDateObj.setMonth(12); 
 
\t } 
 

 
\t return tempDateObj 
 
}; 
 

 
var wrapper = document.getElementById('wrapper'); 
 

 
for(var i = 0; i < 12; i++) { 
 
\t var x = new Date(); 
 
    var prevDate = prevMonth(x.setMonth(i)); 
 
\t var div = document.createElement('div'); 
 
    div.textContent = 
 
    "start month/year: " + i + "/" + x.getFullYear() + 
 
    " --- prev month/year: " + prevDate.getMonth() + 
 
    "/" + prevDate.getFullYear() + 
 
    " --- locale prev date: " + prevDate.toLocaleDateString(); 
 
    wrapper.appendChild(div); 
 
}
<div id='wrapper'> 
 
</div>

Смежные вопросы