Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Подсчет разницы между датами в днях


Автор: xrustic 17.1.2010, 09:28
Помогите, пожалуйста.

Есть два поля input на странице, в которых указывается дата заезда и дата выезда. Дата в виде dd.mm.yyyy

Необходимо подсчитать разницу в датах в днях и вывести это число в третее поле input




<div>  
    <label style="width:100px; height:16px; font:Tahoma; font-size:11px; margin-top:3px">Дата заезда:</label>
    <input id="id_or_data_1" name="or_data1" type="text" style=" height:16px; width:80px" value="<? echo date('d.m.Y'); ?>" onchange="ChangeDate();" />
</div>
<div>
    <label style="width:100px; height:16px; font:Tahoma; font-size:11px; margin-top:3px">Дата выезда:</label>
    <input id="id_or_data_2" name="or_data2" type="text" style=" height:16px; width:80px" value="<? echo date('d.m.Y'); ?>" onchange="ChangeDate();" />
</div>
<div>
    <label style="width:100px; height:16px; font:Tahoma; font-size:11px; margin-top:3px">Ночей:</label>
    <input id="id_or_nights" name="or_nights" type="text" disabled="disabled" style="height:16px; width:80px" value="0"/>
</div>

Автор: comtat 17.1.2010, 10:49
Код

<script>
function ChangeDate(){
  _stDate = document.getElementById('id_or_data_1').value;
  _fnDate = document.getElementById('id_or_data_2').value;

  _p_st = _stDate.split('.');
  _p_fn = _fnDate.split('.');

  _stDate = new Date(_p_st[2], _p_st[1], _p_st[0]);
  _fnDate = new Date(_p_fn[2], _p_fn[1], _p_fn[0]);

  _diff = (_fnDate.getTime() - _stDate.getTime())/(24*60*60*1000);
  document.getElementById('id_or_nights').value = _diff;
  
}
ChangeDate();
</script>

Автор: xrustic 17.1.2010, 12:07
Большое спасибо  smile 

Автор: xrustic 17.1.2010, 13:39
есть небольшая проблемка в этой функции. верный подсчет толко, когда обе даты за один месяц. 

Автор: comtat 19.1.2010, 10:45
Код

<script>
function ChangeDate(){
  _stDate = document.getElementById('id_or_data_1').value;
  _fnDate = document.getElementById('id_or_data_2').value;
  _p_st = _stDate.split('.');
  _p_fn = _fnDate.split('.');
  _stDate = new Date(_p_st[2], _p_st[1]-1, _p_st[0]);
  _fnDate = new Date(_p_fn[2], _p_fn[1]-1, _p_fn[0]);
  _diff = (_fnDate.getTime() - _stDate.getTime())/(24*60*60*1000);
  document.getElementById('id_or_nights').value = _diff;
  
}
ChangeDate();
</script>

Автор: ExSoft 20.1.2010, 00:07
Код

function DaySpan(ANow,AThen)
{
    return(!isNaN(ANow) && !isNaN(AThen) && (ANow instanceof Date) && (AThen instanceof Date) ? (Math.abs(ANow.getTime()-AThen.getTime())+Math.abs(Math.abs(ANow.getTimezoneOffset())-Math.abs(AThen.getTimezoneOffset()))*60*1000)/(1000*60*60*24) : NaN);
}

Автор: xrustic 20.1.2010, 06:34
еще раз спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)