javascript - 在 JavaScript 或 JQuery 中或使用 moment.js 计算 2 个日期和时间之间的小时、分钟

标签 javascript jquery datetime momentjs

我有一个包含以下字段的 Razor 表单:

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

StartDate 和 Start Time、EndDate 和 EndTime 最终合并为一个 SQL 日期时间字段。

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

例如:总时间:36:15 小时

如果开始时间和结束时间似乎跨越一天时可以自动递增结束日期,那么这也会非常有用。例如开始时间晚上 10 点 -> 结束时间早上 7 点。

但无论如何,这是我使用 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"

关于javascript - 在 JavaScript 或 JQuery 中或使用 moment.js 计算 2 个日期和时间之间的小时、分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25497791/

相关文章:

javascript - 如何用更简洁的 jQuery 风格代码替换这些 onclick ="..."属性?

JavaScript 上下滚动不可预测

c# - 使用自定义小时和分钟构造日期时间

java - 捕获按键按下的 ajax 事件,无需输入字段

javascript - 列表的 Backbone subview

jquery - 如何使用 JavaScript/jQuery 在我的幻灯片导航中实现 “current picture” 指示器?

c# - 如何使用 ASP.NET C# 包含 CRUD(而非 MVC)创建 Jquery FileUpload

java - 根据用户时区进行日期转换

C#,DateTime.ParseExact 数据解析错误

javascript - rxjs 在 map Rx.Observable.range(1, 5).map 中使用 async/await