获取两个日期时间选取器之间的无效差异使用'Momentjs' [英] getting invalied difference between two DateTime picker using 'momentjs'

查看:35
本文介绍了获取两个日期时间选取器之间的无效差异使用'Momentjs'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个DateTime选取器,分别是recdeStartTime和recdeEndTime,我希望使用Moment.js显示上述时间之间的总小时数。但是,当我尝试使用以下内容检索差异时:

var calculateTime = function () {
    var startTime = $('#recordStartTime').val();
    var endTime   = $('#recordEndTime').val();
    var totalTime = moment.utc(moment(endTime,"YYYY-MM-DD HH:mm:ss").diff(moment(startTime,"YYYY-MM-DD HH:mm:ss"))).format("HH:mm:ss");
    $('#recordRegularHours').val(totalTime);
};
例如:recdeStartTime=2017-09-01 08:40 AM,recdeEndTime= 2017-09-01 05:45 PM

结果:21:05:00

它返回无效的时间差。如何计算两个时刻之间的时差?

推荐答案

可以从Momentdiff的输出创建duration,然后就可以使用moment-duration-format插件了。该插件将format方法添加到持续时间中,因此您可以使用format('HH:mm:ss')获得所需格式的输出(在本例中为09:05:00)。

此处是工作示例:

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
var calculateTime = function () {
  var startTime = $('#recordStartTime').val();
  var endTime   = $('#recordEndTime').val();

  var diff = moment(endTime,"YYYY-MM-DD HH:mm A").diff(moment(startTime,"YYYY-MM-DD HH:mm A"));
  var dur = moment.duration(diff);
  var totalTime = dur.format('HH:mm:ss')
  $('#recordRegularHours').val(totalTime);
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>

<input type="text" id="recordStartTime" value="2017-09-01 08:40 AM">
<input type="text" id="recordEndTime" value="2017-09-01 05:45 PM">

<input type="text" id="recordRegularHours" readonly>

<button type="button" onclick="calculateTime()">Calulate Diff</button>

请注意,您必须使用"YYYY-MM-DD HH:mm A"而不是"YYYY-MM-DD HH:mm:ss"来正确解析输入,如2017-09-01 08:40 AM

如果您不想添加时长格式插件,可以使用时长获取函数(hours()minutes()seconds())。

这篇关于获取两个日期时间选取器之间的无效差异使用&#39;Momentjs&#39;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆