1. Начата процедура восстановления социальных групп. Лидерам старых и новых групп обязательно ознакомиться с регламентом проведения работ.

Ищется скрипт отображающий количество дней между двумя датами

Тема в разделе 'JavaScript', создана пользователем web-investor, 7 фев 2012.

  1. Есть у кого-нибудь ява-скрипт, который берет, из двух инпутов на странице, даты и вычисляет между ними количество дней?
    Если есть дайте плиз, сам на ява-скрипте кодить вообще не умею...
  2. function my_day() {
    var alt = document.getElementById('date1').value;
    var neu = document.getElementById('date2').value;
    var d = neu.getTime() - alt.getTime();
    return d/(1000*60*60*24);
    }

    только надо правильный формат даты или форматировать в скрипте
    web-investor нравится это.
  3. coolparty, что-то не получается... как правильно выводить работу скрипта? И какой формат даты правильный? (10-02-2012?)
  4. Какие ID у полей с датами? Куда надо выводить результат?
  5. date1 и date2, соответственно. Результат нужно сохранить в переменную для дальнейшей работы с ней в php-скрипте.
  6. если переменная нужна везде обявите ее в начале скрипта (!не функции!)

    var my_new;

    my_new = my_day(); //теперь у вас есть переменная с разницей дней доступная в любом месте

    формат Objektname = new Date(Год, Месяц, День);
    web-investor нравится это.
  7. coolparty, посмотри, правильно делаю?

    PHP:
    <input name="date1" type="text" value="2012-11-10"  /><br />
    <input name="date2" type="text" value="2012-11-14"/>
     
    <script language="javascript">
    var my_new;
    my_new = my_day();
     
    function my_day() {
    var alt = document.getElementById('date1').value;
    var neu = document.getElementById('date2').value;
    var d = neu.getTime() - alt.getTime();
    return d/(1000*60*60*24);
    }
    </script>
     
    <? echo $my_new ?>
    Что-то переменная $my_new не выводится...
  8. потому что $my_new это переменная яваскрипта, а вывести её пытаетесь средствами php...
    попробуйте вывести так:
    <script language="javascript">
    .........
    document.write(my_new);

    </script>
  9. dino, так тоже сцуко не выводится... Что-то я думаю формат даты в инпуте не правильный (value="2012-11-10").
    ...
    Добавил к инпутам соответствующие им id, все равно не работает.
    ...
    Сделал так:
    Код:
    <script type="text/javascript">
    var my_new;
    my_new = my_day();
     
    function my_day() {
    var alt = document.getElementById('date1').value;
    var neu = document.getElementById('date2').value;
    var d = neu.getTime() - alt.getTime();
    return d/(1000*60*60*24);
    }
    </script>
    <script type="text/javascript">
      document.write(my_new);
    </script>
    Теперь выводит "undefined ". Похоже действительно что-то с форматом даты.
  10. В общем сейчас ситуация следующая:
    Добавил к инпутам выплывающий календарь, чтобы руками юзер даты не забивал.
    Получился вот такой код:
    Код:
    <html>
    <head>
    <link rel='stylesheet' href='calendar.css' type='text/css'>
    <script type='text/javascript' src='calendar.js'></script>
    </head>
    <body>
    date1<input name="data11" class="date" id="date1"><br>
    date2<input name="data21" class="date" id="date2"><br>
    <script type="text/javascript">
    var my_new;
    my_new = my_day();
     
    function my_day() {
    var alt = document.getElementById('date1').value;
    var neu = document.getElementById('date2').value;
    var d = neu.getTime() - alt.getTime();
    return d/(1000*60*60*24);
    }
     
    </script>
    <script type="text/javascript">
      document.write(my_new);
    </script>
    </body>
    </html>
    Формат даты изменился, теперь в инпут попадает такая дата "26-02-2012", благодаря всплывающему календарю.
    Но все равно функция выдает "undefined".
    Как это выглядит вы можете увидеть на скрине.

    Подскажите, что сделать, чтобы функция нормально работала и выводила разницу между датами? Как привести формат даты к нужному виду?

    -----------------------------------
    Нашел в сети еще вот такую вещь:
    Код:
    String d1 = " 23.11.2011";
    String d2 = " 25.11.2011";
    SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
    Date date1 = null;
    Date date2 = null;
    try {
            date1 = format.parse(d1);
            date2 = format.parse(d2);
    } catch (Exception e) {
            e.printStackTrace();
    }
    long difference = date1.getTime() - date2.getTime();
    long days =  difference / (24 * 60 * 60 * 1000);
    System.out.println("days=" + days);
    Но тоже у меня не работает......
    -----------------------------------
    Пробовал также такую вещь:
    Код:
    String a = "27.03.2011";
    String b = "28.03.2011";
     
    DateFormat da = new SimpleDateFormat("dd.MM.yyyy");
    DateFormat db = new SimpleDateFormat("dd.MM.yyyy");
     
    long a1 = da.parse(a).getTime();
    long b1 = db.parse(b).getTime();
     
    long t = ((b1-a1))/(1000*24*3600);
    И ни фига!
    -----------------------------------
    Блин, ни чего не получается, явакодеры где вы?

    Вложения:

    • kalen.jpg
      kalen.jpg
      Размер файла:
      22,8 КБ
      Просмотров:
      6