JavaScript Date.toJSON() produces a date which has wrong hours and minutes
I want to print a Date to ISO-8601
standard: YYYY-MM-DDTHH:mm:ss.sssZ
so I used the following lines of code, but I am getting unexpected output
var date = new Date(2012, 10, 30, 6, 51);
print('UTC Format: '+date.toGMTString());
print('toString() method: '+date.toString());
print('toJSON() method: '+date.toJSON());//print hours and minutes incorrectly
print('to UTCString() method: ' + date.toUTCString());
The corresponding output is
UTC Format: Fri, 30 Nov 2012 01:21:00 GMT
toString() method: Fri Nov 30 2012 06:51:00 GMT+0530 (India Standard Time)
toJSON() method: 2012-11-30T01:21:00.000Z
to UTCString() method: Fri, 30 Nov 2012 01:21:00 GMT
The toJSON() method prints hours and minutes incorrectly but toString() prints it correctly, I wanted to know what is the reason for that. Do I have to add time offset to the Date object, if yes then how?
var date = new Date();
console.log(date.toJSON(), new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toJSON());
date.toJSON()
prints the UTC-Date into a string formatted as json-date.
If you want your local-time to be printed, you have to use getTimezoneOffset(), which returns the offset in minutes. You have to convert this value into seconds and add this to the timestamp of your date:
var date = new Date(2012, 10, 30, 6, 51);
new Date(date.getTime() + (date.getTimezoneOffset() * 60000)).toJSON()
链接地址: http://www.djcxy.com/p/13582.html