Подтвердить что ты не робот

JQuery Рассчитать разницу в день в текстовых полях с двумя датами

HI Ребята,

У меня есть 2 asp.net texboxes с расширителем календаря. Я хочу узнать количество дней между обеими датами, когда один из элементов управления датой изменен. как я могу достичь этого, используя jquery или javascript?

4b9b3361

Ответ 1

Это должно сделать трюк

var start = $('#start_date').val();
var end = $('#end_date').val();

// end - start returns difference in milliseconds 
var diff = new Date(end - start);

// get days
var days = diff/1000/60/60/24;

Пример

var start = new Date("2010-04-01"),
    end   = new Date(),
    diff  = new Date(end - start),
    days  = diff/1000/60/60/24;

days; //=> 8.525845775462964

Ответ 2

1) HTML

<input type="text" id="firstDate" name="firstDate"/>
<input type="text" id="secondDate" name="secondDate"/>

2) Jquery

$("#firstDate").datepicker({

}); 
$("#secondDate").datepicker({
    onSelect: function () {
        myfunc();
    }
}); 

function myfunc(){
    var start= $("#firstDate").datepicker("getDate");
    var end= $("#secondDate").datepicker("getDate");
    days = (end- start) / (1000 * 60 * 60 * 24);
    alert(Math.round(days));
}

Jsfiddle рабочий пример здесь

Ответ 3

Привет, Это мой пример расчета разницы между двумя датами

    <!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <script src="https://code.jquery.com/jquery.min.js"></script>
  <title>JS Bin</title>
</head>
<body>
  <br>
<input class='fromdate' type="date"  />
<input class='todate' type="date" />
<div class='calculated' /><br>
<div class='minim' />  
<input class='todate' type="submit" onclick='showDays()' />

</body>
</html>

Это функция, которая вычисляет разницу:

function showDays(){

     var start = $('.fromdate').val();
     var end = $('.todate').val();

     var startDay = new Date(start);
     var endDay = new Date(end);
     var millisecondsPerDay = 1000 * 60 * 60 * 24;

     var millisBetween = endDay.getTime() - startDay.getTime();
     var days = millisBetween / millisecondsPerDay;

      // Round down.
       alert( Math.floor(days));

}

Надеюсь, я помог вам

Ответ 4

Я также столкнулся с той же проблемой и успешно потратил на это половину своего дня. И, наконец, разобрался с проблемой. Вы можете увидеть пример ниже:

Примечание: не забудьте включить скрипт jquery:

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<script>
            $("#ToDate").change(function () {
                var start = new Date($('#FromDate').val());
                var end = new Date($('#ToDate').val());

               var diff = new Date(end - start);
               var days=1;
                days = diff / 1000 / 60 / 60 / 24;


                if (days == NaN) {
                    $('#TotalDays').val(0);
                } else {
                    $('#TotalDays').val(days+1);
                }
            })
        </script>

И вы выглядите так:

<form action="{{route('leave.store')}}" method="post" class="form-horizontal">
                        @csrf
                        <div class="card-body">
                            <h4 class="card-title">Apply Leave</h4>
                            <div class="form-group row">
                                <label for="fname" class="col-sm-3 text-right control-label col-form-label">Leave type</label>
                                <div class="col-sm-9">
                                    <input type="text" name="leave_type" class="form-control" id="fname" placeholder="Leave type">
                                </div>
                            </div>
                            <div class="form-group row">
                                <label for="lname" class="col-sm-3 text-right control-label col-form-label">Date from</label>
                                <div class="col-sm-4">
                                    <input type="date" min="{{date('Y-m-d')}}" name="from" class="form-control" id="FromDate">
                                </div>
                                <div class="col-sm-4">
                                    <input type="date" name="to" class="form-control" id="ToDate">
                                </div>
                            </div>
                            <div class="form-group row">
                                <label for="fname" class="col-sm-3 text-right control-label col-form-label">Days</label>
                                <div class="col-sm-9">
                                    <input type="text" name="days" class="form-control" id="TotalDays" placeholder="Number of leave days">
                                </div>
                            </div>
                            <div class="form-group row">
                                <label for="fname" class="col-sm-3 text-right control-label col-form-label">Reason</label>
                                <div class="col-sm-9">
                                    <textarea type="text" name="reason" class="form-control" placeholder="Reason">
                                    </textarea></div>
                            </div>
                        </div>
                        <div class="border-top">
                            <div class="card-body">
                                <button type="submit" class="btn btn-dark">Apply</button>
                            </div>
                        </div>
                    </form>

Ответ 5

как, если я хочу показать значение в поле?

оповещение (Math.floor (дни));

Ответ 6

Расчет количества дней между двумя датами.

    $(document).ready(function () {
        $('.submit').on('click', function () {
            var startDate = $('.start-date').val();
            var endDate = $('.end-date').val();

            var start = new Date(startDate);
            var end = new Date(endDate);

            var diffDate = (end - start) / (1000 * 60 * 60 * 24);
            var days = Math.round(diffDate);
        });
    });

Ответ 7

Вот как я это сделал, используя функцию Math.floor():

var start = new Date($('#start').val());
var end = new Date($('#end').val());
var diff = Math.floor((end-start) / (365.25 * 24 * 60 * 60 * 1000));
console.log(diff);

Вы также можете сделать это, используя функцию Math.round():

var start = new Date($('#start').val());
var end = new Date($('#end').val());
var diff = new Date(end - start) / (1000 * 60 * 60 * 24 * 365.25);
var age = Math.round(diff);
console.log(age);

Ответ 8

   **This is a simple way of getting the DAYS between two dates** 
    var d1 = moment($("#StartDate").data("DateTimePicker").date());
    var d2 = moment($("#EndDate").data("DateTimePicker").date());

    var diffInDays = d2.diff(d1, 'days');

    if (diffInDays > 0)
    {
        $("#Total").val(diffInDays);
    }
    else
    {
        $("#Total").val(0);
    }

Ответ 9

Это простой способ получить DAYS между двумя датами

var nites = dateDiff(arriveDate,departDate,"D");