计算小时和分钟之间的2日期和时间

Calculate hours and minutes between 2 date and time

本文关键字:日期 时间 之间 小时 分钟 计算      更新时间:2023-09-26

希望有人能帮帮我。我有一个表单,我需要一个用户输入事件的开始时间和结束时间。一旦他们输入了信息,他们将手动输入两个日期时间之间的持续时间。我试图用jquery自动化这个过程,并得到了一个名为时刻http://momentjs.com/的插件。我希望它能让我计算2个日期时间更简单,但我必须承认,我对jquery或javascript不太了解,无法理解它们是如何组合在一起的。

另一方面,我需要只在duration字段为空时才计算它。我创建了一个jquery http://jsfiddle.net/FLhpq/2044/。这是我能找到的最接近我的场景。以下是目前为止的代码:

$(document).ready(function() {
    var start_time = $('input[title="start time"]').val();
    var end_time = $('input[title="End time"]').val();
    var d1 = moment(start_time, "YYYY-MM-DD HH:mm");
    var d2 = moment(end_time, "YYYY-MM-DD HH:mm");
    var duration = d2.diff(d1, 'hours')+1;
    var input = $('input[title="duration"]').val();
    if(input == ''){
         $('#duration').val('duration');
 });    

我相信你算对了。我认为这只是视觉上的执行。

我把下面的小提琴放在一起,我认为你想做什么;jsfiddle.net/.. .

    $(document).ready(function() {
      var start_time = $('.start').val(),
        end_time = $('.end').val(),
        d1 = moment(start_time, "YYYY-MM-DD HH:mm"),
        d2 = moment(end_time, "YYYY-MM-DD HH:mm"),
        duration = d2.diff(d1, 'hours') + 1,
        $input = $('.duration');
      if ($input.val() === ''){
        $input.val(duration);
      }
   });

在你原来的小提琴。没有ID为"duration"的元素。同样,对于抓取元素,尝试用类名代替选择器。我在输入中添加了一些简单的类,以便使用jQuery更容易抓取它们。

从这里开始,如果你还想额外显示分钟/秒,你可以通过使用一些momentjs的内置功能(如to)来改变你的持续时间逻辑。

我相信下面的话;

duration = d1.to(d2) // RETURNS MOMENT

希望这对你有所帮助!

你应该看看这个

         var a = moment([2007, 0, 28]);
         var b = moment([2007, 0, 29]);
         a.to(b);                     // "in a day"

          var a = moment([2007, 0, 29]);
          var b = moment([2007, 0, 28]);
          a.diff(b, 'days') // 1

这将显示小时(和分钟),如果duration字段为空则显示它:

$(document).ready(function() {
    if($('#duration').val() === '') {
        updateDuration($('#start_time').val(), $('#end_time').val());
    }
    $('#start_time').on('change keyup', function() {
        updateDuration($('#start_time').val(), $('#end_time').val());
    });
    $('#end_time').on('change keyup', function() {
        updateDuration($('#start_time').val(), $('#end_time').val());
    });
    function updateDuration(startTime, endTime) {
        var ms = moment(endTime, 'YYYY/MM/DD HH:mm:ss').diff(moment(startTime, 'YYYY/MM/DD HH:mm:ss')),
            dt = moment.duration(ms),
            h  = Math.floor(dt.asHours()),
            m  = moment.utc(ms).format('mm');
        $('#duration').val(h + ' hours, ' + m + ' minutes');
    }
});

如果用户改变了值,这也会更新duration输入字段。

您可以在这里看到一个工作的JSFiddle:

http://jsfiddle.net/divspace/9x0s01oy/