节点js

时间:2015-12-15 06:54:27

标签: javascript node.js momentjs

我是nodeJs的新手,在我的项目中使用了moment.js。我想计算导致小时分钟和秒的日期时间差异。我用谷歌搜索,但没有相关的解决方案。

这是代码和我在谷歌上的努力。

var moment = require('moment');

var now  = "26/02/2014 10:31:30";
var then = "25/02/2014 10:20:30";

var config = "DD/MM/YYYY HH:mm:ss";

var duration = moment.utc(moment(now, config).diff(moment(then,config))).format("HH:mm:ss");

console.log(duration);

这会打印00:11:00 预期结果为23:11:00

任何帮助将不胜感激,并提前感谢。

2 个答案:

答案 0 :(得分:1)

您必须添加:

var d = moment.duration(ms);
var s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss");

输出:24:11:00

由于您的时差大于24小时,因此重置为零。从那里它给你剩余的11:00分钟。因此输出00:11:00。

var moment = require('moment');

var now  = "26/02/2014 10:31:30";
var then = "25/02/2014 10: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");

console.log(s); 

答案 1 :(得分:0)

如下面的链接和我的评论中所述,您的格式将在24小时内变为00:11:00格式。

https://stackoverflow.com/a/18624295/2903169

现在我已经检查了这个并提供了以下答案的片段。

var moment = require('moment');

var now  = "26/02/2014 10:31:30";
var then = "25/02/2014 10:20:30";

var config = "DD/MM/YYYY HH:mm:ss";
var ms = moment(now, config).diff(moment(then,config));
var d = moment.duration(ms);
var s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss");

console.log(s) // will log "24:11:00"

道具Matt Johnson提供答案