Ответ 1
var date = new Date();
console.log(date.toJSON(), new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toJSON());
Я хочу напечатать дату до ISO-8601
standard: YYYY-MM-DDTHH:mm:ss.sssZ
, поэтому я использовал следующие строки кода, но получаю неожиданный вывод
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());
Соответствующий вывод
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
Метод toJSON() неправильно печатает часы и минуты, но toString() печатает его правильно, я хотел знать, в чем причина этого. Должен ли я добавлять временное смещение к объекту Date, если да, то как?
var date = new Date();
console.log(date.toJSON(), new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toJSON());
date.toJSON()
печатает UTC-Date в строку, форматированную как json-date.
Если вы хотите, чтобы ваше местное время было напечатано, вы должны использовать getTimezoneOffset(), который возвращает смещение в минутах. Вам нужно преобразовать это значение в секундах и добавить его к отметке времени вашей даты:
var date = new Date(2012, 10, 30, 6, 51);
new Date(date.getTime() + (date.getTimezoneOffset() * 60000)).toJSON()