I have a webservice that returns for example a DateTime object: DepartureDate.
I use ajax to fetch this and in my view I convert the JSON date string to a javascript date object with this function:
function convertToDate(jsonDate) {
return eval("new " + jsonDate.substring(1, jsonDate.length - 1));
}
The problem is that new Date() takes the local time on the clients computer in consideration, so clients in different countries get different dates. I want to get the exact date that was returned from the webservice.
Is there any easy way to accomplish this?
Nope. Creating a new Date using the timestamp constructor takes a UTC time stamp.
For example on my machine in UTC+1:
OK, the default
toStringdisplays this date as 01:00:00 which looks wrong, but that’s actually the correct time. 01:00:00 in UTC+1 is 00:00:00 in UTC, which is the moment described by timestamp0.If you want to display the dates you’ve creating from a timestamp in UTC, use
date.toUTCString()or fetch and format the consistuent parts of the date usinggetUTCFullYear(),getUTCMonth()etc.Please, though, no
eval.