Grant
Grant

Reputation: 218

moment.js diff between two timezone formatted dates

I have to calculate a time difference between a set time and the current server time.

I'm using the momentjs and the moment timezone library.

Here's what I have:

var serverTime = moment.tz(new Date(), "Europe/Berlin").format();
var bar = moment.tz("2016-05-14 00:00:00", "Europe/Berlin").format();
var baz = bar.diff(serverTime);

console.log('server time is: ' + serverTime);
console.log('time diff is: ' + baz);

This gives me an error:

TypeError: bar.diff is not a function

Is it possible to diff between two timezone formatted dates? If not, what's the optimal way to conduct such calculation using the momentjs library?

Upvotes: 4

Views: 13204

Answers (2)

Matt Johnson-Pint
Matt Johnson-Pint

Reputation: 241535

format produces a string, so don't use it until you need a string.

var now = moment.tz("Europe/Berlin");
var bar = moment.tz("2016-05-14 00:00:00", "Europe/Berlin");
var baz = bar.diff(now);

console.log('current time is: ' + now.format());
console.log('time diff is: ' + baz);

Note that it's not the "server time" unless you're running this code on the server. As long as it's running on the client, it's still based on the client's clock - even if you use a different time zone.

Upvotes: 6

Grant
Grant

Reputation: 218

moment.js is truly great!

It seems I can simply do:

moment.duration(day14.diff(serverTime)).asHours();

or to get the digits for the minutes and hours separately

moment.duration(day14.diff(serverTime)).minutes();
moment.duration(day14.diff(serverTime)).hours();

Upvotes: 0

Related Questions