Convert Node.js "new Date()" to user's local timezone on the client
This is a snippet I have become very fond of. Assuming your node.js server simply sets a time property to new Date()
and makes that property available to the client, you can convert it to the user's local time zone using client-side code like this:
var toLocalTime = function(time) {
var d = new Date(time);
var offset = (new Date().getTimezoneOffset() / 60) * -1;
var n = new Date(d.getTime() + offset);
return n;
};
Couple that with moment.js and all your time-related issues are but a mere memory of a long and forgotten pain.
Written by Declan de Wet
Related protips
3 Responses
So right now I use:
client.sendMSG( new Date().toLocaleTimeString() + ' : ' + message.utf8Data );
How can I use your function with what I have to get the local time?
This is wrong. getTimezoneoffset() returns the offset in minutes. This would basically turn your minutes into hours and then subtract that from milliseconds which would not do anything correct. Use this instead:
const toLocalTime = (time) =>{
let d = new Date(time);
let offset = (new Date().getTimezoneOffset() * 6000);
return new Date(d.getTime() + offset);
};
Working:
const toLocalTime = (time: Date) => {
let d = new Date(time);
let offset = (new Date().getTimezoneOffset() * 60000);
if (offset < 0)
return new Date(d.getTime() - offset);
else
return new Date(d.getTime() + offset);
};