【问题标题】:How to get total hours HH:MM format using Moment.js?如何使用 Moment.js 获取总小时数 HH:MM 格式?
【发布时间】:2016-01-19 04:25:36
【问题描述】:

我想使用 Moment.js 计算一周的总时间。请指教。 这是我迄今为止尝试过的:

total = "00:00";
for (var i in json_obj) {

    var timeEnd = json_obj[i].END;
    var timeStart = json_obj[i].START;

    var timeDiff = moment.utc(moment(timeEnd, "HH:mm:ss").diff(moment(timeStart, "HH:mm:ss"))).format("HH:mm");
    var res = timeDiff;
    total = moment().add(res);

【问题讨论】:

  • json_obj[i].END的值是多少;和 json_obj[i].START ?他们是秒吗?
  • 需要提供示例输入数据以供任何人提供帮助。如果您只有"HH:mm:ss",则无法知道发生在哪一天。需要完整的 dateTime 才能做到这一点
  • @drj : 06:00:00 它的 hh:mm:ss 格式。我已经用截图更新了问题
  • @charlietfl : 请用截图检查更新的问题
  • 截图对我们没有任何好处...无法从图像中提取数据。最好的办法是创建一个包含足够数据和脚本依赖项的演示来运行您的代码...可以使用 jsfiddle.net、plnkr.co、codepen.io 等

标签: javascript momentjs


【解决方案1】:

这是我在 SO 和 moment.js 文档的帮助下实现的。

var startTime = moment("06:10:00", 'hh:mm');
var endTime = moment("08:00:00", 'hh:mm');

var totalSec = endTime.diff(startTime, 'seconds');

var hours = parseInt(totalSec / 3600) % 24;
var minutes = parseInt(totalSec / 60) % 60;
var seconds = totalSec % 60;

var result = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds);

该解决方案并非完全用 moment 实现,而是将老派逻辑与 momentjs 相结合。

但这将满足您的要求。

要删除旧式逻辑并真正使用下面的代码。

var result = moment().startOf('day')
        .seconds(totalSec)
        .format('H:mm')

JSFiddle 两个版本。

【讨论】:

    【解决方案2】:

    给出准确结果的最佳解决方案。 即使你的小时数是 3 位数,它也会给出正确的结果。

    const allhours= [
     '5677:40:20',
     '888:30:50'
    ]
    const totalhours = allhours.slice(1)
    .reduce((prev, cur) => moment.duration(cur).add(prev),
    moment.duration(allhours[0]));
    var ms = totalhours ._milliseconds;
    var ticks = ms / 1000;
    var hh = Math.floor(ticks / 3600);
    var mm = Math.floor((ticks % 3600) / 60);
    var ss = ticks % 60;
    
    
    console.log(hh+""+mm+""+ss);
    

    【讨论】:

      猜你喜欢
      • 2018-07-23
      • 1970-01-01
      • 2020-02-09
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多