2015-12-15 27 views
0

我是nodeJs的新手,在我的项目中使用了moment.js。我想计算几分钟和几秒钟的日期时间差异。我GOOGLE了,但没有得到相关的解决方案。以小时分钟和秒为单位的日期时间差异节点js中的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

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

+0

我遇到的问题是,对于'now'和'then'格式不正确,以momentjs的最新版本的格式。 我相信你正试图向后计算(从现在到过去)。 但是,这一刻将返回'then'和'now'之间的时间差 - 这相当于'24:11:00' –

回答

0

你将不得不补充:

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

输出:24:11:00

由于您的时间差大于24小时,它被重置为零。从那里开始剩余的11分钟。因此输出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); 
0

正如下面和我的评论链接引用,您的格式将零到00:11:00格式24小时以上。

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提供答案

+0

谢谢马特约翰逊多数民众赞成在我工作 – user3446467

+0

你应该接受答案作为解决方案,并关闭问题 – user3452275

相关问题