Reputation: 218
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
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
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