Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   разница между датами (https://javascript.ru/forum/misc/35791-raznica-mezhdu-datami.html)

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

Цитата:

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

Цитата:

Сообщение от liarbur
формат дат 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

Цитата:

Сообщение от almaty-111111
но надо добавить проверку даты, чтоб период между введенными датами не превышал 1 месяца

- Внимание вопрос! (с) (звучит гонг)


Часовой пояс GMT +3, время: 16:02.