计算小时,分钟在JavaScript或JQuery或moment.js - 2个日期和时间之间

Calculate hour, minute in JavaScript or JQuery or with moment.js - between 2 dates and times

本文关键字:2个 日期 之间 时间 js JQuery 小时 分钟 计算 JavaScript moment      更新时间:2023-09-26

我有一个Razor表单,它有以下字段:

Startdate
Starttime (24 hr)
EndDate
EndTime (24hr)
BreakDuration (increments of 15 minutes)

开始日期和开始时间,结束日期和结束时间最终合并成一个SQL DateTime字段..

我需要在表单中显示持续时间的字段-所以基本上是开始和结束之间的天,小时,分钟,减去休息持续时间。

例如:Total Time:36:15 hrs

如果结束日期可以在开始时间和结束时间似乎跨越一天时自动增加,那将是非常有用的。如start-time 10pm -> end-time 7am.

无论如何,这是我使用moment。js的jsfiddle

http://jsfiddle.net/beebul/kwdo9yrj/

HTML:

    <div class="conthttp://jsfiddle.net/beebul/kwdo9yrj/49/#forkrols">
    <input type="text" style="width:300px" name="momentDurationHours" id="momentDurationHours" readonly="" />&nbsp; 
    <a href="#" id="show">Show Total duration</a>
</div>
JavaScript:

    $('#show').click(function () {
    {
        var startDate = '28/10/2010'; //taken from the date and time pickers
        var endDate = '29/10/2010';
        var startTime = '12:00';
        var endTime = '17:00';
        var breakduration = '01:25:00';
        var joinStartDates = startDate + " " + startTime;
        var joinEndDates = endDate + " " + endTime;
        var totalHours = moment(joinEndDates, "DD/MM/YYYY HH:mm").diff(moment(joinStartDates, "DD/MM/YYYY HH:mm"), 'minutes');
        var breaktime = moment.duration(breakduration, 'HH:mm').asMinutes();            
        var takeBreak = totalHours - breaktime;
        //this bit below doesn't work but you get the idea...
        //var totalHoursMinusBreak = moment(takeBreak).format("HH:mm"); //trying to convert mins to HH:mm
        $('input[name="momentDurationHours"]').val(totalHours + " min - break: " + breaktime + "mins = TOTAL AS HRS?? ");
    }
});

我在尝试使用moment.js减去函数时被绑在了绳结上,所以决定先转换为分钟,然后尝试将最后的总分钟转换为HH:mm

非常感谢您的建议和建议

尝试使用moment.js

var now  = "04/09/2013 15:00:00";
var then = "02/09/2013 14:20:30";
var ms = moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"));
var d = moment.duration(ms);
var s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss");
// outputs: "48:39:30"