node.js - Wrong hour difference between 2 timestamps (hh:mm:ss) -
using moment.js, want time difference between 2 timestamps.
doing following,
var prevtime = moment('23:01:53', "hh:mm:ss"); var nexttime = moment('23:01:56', "hh:mm:ss"); var duration = moment(nexttime.diff(prevtime)).format("hh:mm:ss");
i result :
01:00:03
why have 1 hour difference? seconds , minutes seem work well.
after doing that, tried following :
function time_diff(t1, t2) { var parts = t1.split(':'); var d1 = new date(0, 0, 0, parts[0], parts[1], parts[2]); parts = t2.split(':'); var d2 = new date(new date(0, 0, 0, parts[0], parts[1], parts[2]) - d1); return (d2.gethours() + ':' + d2.getminutes() + ':' + d2.getseconds()); } var diff = time_diff('23:01:53','23:01:56');
output : 1:0:3
the problem having here when putting nexttime.diff()
in moment constructor, feeding milliseconds moment()
, tries interpret timestamp, why don't expected result.
there no "nice way" of getting result want apart getting time , manually reconstructing looking :
var dur = moment.duration(nexttime.diff(prevtime)); var formattedduration = dur.get("hours") +":"+ dur.get("minutes") +":"+ dur.get("seconds");
and more elegant version give 0 padding in output :
var difference = nexttime.diff(prevtime); var dur = moment.duration(difference); var zeropaddedduration = math.floor(dur.ashours()) + moment.utc(difference).format(":mm:ss");
should make happier!
edit : have noticed use hh:mm:ss
format, should instead use hh:mm:ss
. 'ss' give fractional values seconds between 0 , 999, not want here.
Comments
Post a Comment