The server side is in C# and it returns object array list as json format. There is one field in the object model, it is DateTime type, and its value is DateTime.MinValue
.
While in the page side, it receives /Date(-62135596800000)/
in string. I guess this is because of the object is serialized. And in javascirpt, I try to convert it back to Date type.
var timeSpan = element.DateModify.replace('Date','').replace('(','').replace(')','').replace(/\//g,'');
console.log(timeSpan);
var d = new Date(parseInt(timeSpan));
console.log(d);
When converted to Date in javascript, its value is 0001-01-01 08:05:43
, not 0001-01-01 00:00:00
. Why is it?
CodePudding user response:
DateTime.MinValue
is 0001-01-01 00:00:00 UTC. And that is indeed 0001-01-01 08:05:43 in your local time zone (whatever that may be, probably Asia/Shanghai
or somewhere near that). When you console.log
a Date
, it displays the date in your local time zone. The Date
value is correct. It's just displayed in a different format.
The extra 5 minutes and 43 seconds is because at the year AD 1, time zones have not been standardised, and the local mean time offset from UTC at your location is 08:05:43.
Two simple ways to make it display the UTC time of 00:00:00 is to call toISOString
or toUTCString
:
console.log(new Date(-62135596800000).toISOString());
console.log(new Date(-62135596800000).toUTCString());