toJSON() метод возвращает дату UTC, но Date() ожидает «Local Date». Таким образом, есть два пути либо вы даете дату в формате UTC к Date() конструктор или добавить свой часовой пояс для объекта Date позже
Первый путь (Установка даты UTC вместо локальной даты с помощью Date.UTC)
var starttime = "2015-05-26T00:00:00";
var date=new Date(starttime); //create a local date
var date= new Date(Date.UTC(date.getFullYear(),date.getMonth(),date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds()));
//this is UTC date set using Date.UTC
jsonconvert=date.toJSON(); //returns the UTC Date
alert(jsonconvert)
Второй способ (Добавление TimeZone к дате поэтому во время toJSON будет вычитать TimeZone и вернуть правильную дату)
var starttime = "2015-05-26T00:00:00";
var date=new Date(starttime);
date.setTime(date.getTime() - date.getTimezoneOffset()*60*1000);//Add TimeZone to Local Date
jsonconvert=date.toJSON()
alert(jsonconvert)
PS:
- date.getTimezoneOffset() вычитается, как это вернуть отрицательное значение, если время опережает UTC и наоборот
- Вы также должны добавить Z в строку, чтобы сделать его исправить UTC datetime string
Спасибо Ankit, но проблема в solv в IE, но не в Google Chrome. Перед добавлением этого шага в google chrome он дает пользователю заданное время, но в IE он дает мне время UTC. после добавления его начала наоборот –
@AravindE Вам нужно добавить Z после вашей даты, чтобы получить правильную строку datetime – bugwheels94
@ Ankit Спасибо, я сделал это, у меня есть две даты: первая - дата начала и время начала, другое - дата окончания и конец время, согласно вашей инструкции, дата начала и время ввода - это тип ввода пользователя. но мои конечные дата и время, кажется, отстают, (он идет -15 часов назад от времени ввода пользователя). Не могли бы вы обновить и дать мне пример через скрипку. –