获取两个日期时间选取器之间的无效差异使用';Momentjs'; [英] getting invalied difference between two DateTime picker using 'momentjs'
本文介绍了获取两个日期时间选取器之间的无效差异使用';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()
)。
这篇关于获取两个日期时间选取器之间的无效差异使用';Momentjs';的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文