Я ищу способ сделать правильное вычитание между двумя объектами даты javascript и получить дельта дня.javascript вычитание даты
Это мой подход, но он не на дату сегодняшнего в качестве входного сигнала:
<script type="text/javascript">
function getDayDelta(incomingYear,incomingMonth,incomingDay){
var incomingDate = new Date(incomingYear,incomingMonth,incomingDay);
var today = new Date();
var delta = incomingDate - today;
var resultDate = new Date(delta);
return resultDate.getDate();
}
//works for the future dates:
alert(getDayDelta(2009,9,10));
alert(getDayDelta(2009,8,19));
//fails for the today as input, as expected 0 delta,instead gives 31:
alert(getDayDelta(2009,8,18));
</script>
Что бы лучше подходят для этого?
спасибо за исправление, но это, похоже, терпит неудачу: getDayDelta (2009,8,19); // должен возвращать 1, но возвращает 0 (это 18-е место в мое местное время) – Hellnar
Да, это потому, что 'today' включает время, см. мое редактирование ... – CMS
@Crib: проблема в том, что' incomingDate' имеет временную часть 0 часов, 0 минут, 0 секунд и 0 миллисекунд. Вы должны сделать то же самое для 'today', или вы получите частичные дни на день вперед/назад. Я отредактировал ответ, чтобы отразить изменения. –