Вход

Просмотр полной версии : разница между датами


liarbur
22.02.2013, 11:36
подскажите плиз, есть вот такой код ввода дат:

<tr >
<td ></td><td>
<b>Дата приезда:<span style="color:red;">*</span></b>
</td>
<td>
<input type="text" id="startDate" name="ar_date" value="<?=set_value('ar_date');?>" style=" background-color: #fff;">
</td>
</tr>

<tr >
<td ></td>
<td>
<b>Дата отъезда:<span style="color:red;">*</span></b>
</td>
<td>
<input type="text" id="endDate" name="dep_date" value="<?=set_value('dep_date');?>" style=" background-color: #fff;">
<td></td>
</td>
</tr>

нужно вычислить разницу между этими двумя датами и вывести в новое окно.

ksa
22.02.2013, 11:40
liarbur, формат тех дат какой?

liarbur
22.02.2013, 12:17
Насколько я понимаю, формат дат dd.mm.yyyy

ksa
22.02.2013, 13:02
вычислить разницу между этими двумя датами и вывести в новое окно
формат дат dd.mm.yyyy
Как вариант...

var d1='01.01.2010';
var d2='31.12.2012';
d1=strToDate(d1);
d2=strToDate(d2);
alert(d2-d1);
//
function strToDate(Str) {
var a=Str.split('.')
return new Date(a[2],a[1]-1,+a[0]);
}

liarbur
22.02.2013, 15:02
Большое спасибо

almaty-111111
04.04.2013, 13:36
Добрый день!
У меня есть скрипт, но надо добавить проверку даты, чтоб период между введенными датами не превышал 1 месяца (т.е. 31 дня)

function check_date_format(o)
{ d = new Date();
m = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if (d.getYear()%4==0) m[2] = 29;

s = new String(o.value);
r = s.split("-");
if (r.length<3)
{ return false; }

dd = new Number(r[0]);
mm = new Number(r[1]);
yy = new Number(r[2]);

t = 0;
if (parseInt(dd) == NaN) t++;
if (parseInt(mm) == NaN) t++;
if (parseInt(dd) == NaN) t++;

if (t)
{ return false; }

if (mm<1 || mm>12 || dd<1 || dd>31 || m[mm]<dd)
{ return false; }
d.setYear(yy);
d.setMonth(mm - 1);
d.setDate(dd);
return d;
}

function check_date(o) {
startDate = check_date_format(o.P_START_DATE);
endDate = check_date_format(o.P_END_DATE);
event.returnValue = true;
if (startDate > endDate) { alert("Дата начала периода не должна быть больше даты конца периода.");
event.returnValue = false; }
else return (event.returnValue); }

решение есть! добавить
n=(endDate-startDate)/1000/60/60/24

и условие
if (n > 31)
{ alert("ошибка");
event.returnValue = false; }

ksa
04.04.2013, 15:20
но надо добавить проверку даты, чтоб период между введенными датами не превышал 1 месяца
- Внимание вопрос! (с) (звучит гонг)