Это первый раз, когда я получаю этот результат.Почему новая дата, установленная сегодня, возвращает вчера
Я использую элемент управления Telerik RadDatePicker, и я назначаю дату на стороне клиента.
Дело в том, что управление не принимает строку в качестве даты, но объект Дата в JavaScript
Итак, мой код, чтобы установить дату в элементе управления является
var radDateControl = $find("radDateControl");
radDateControl.set_selectedDate(new Date('2016-04-26'));
Но, Я понял, что новая дата возвращает дату как вчера! Зачем?
Это 5:58 вечера по восточному поясному времени (США & Канада) прямо сейчас. И если я делаю это
alert(new Date('2016-04-26'));
Я получаю
Mon Apr 25 2016 20:00:00 GMT-0400 (Eastern Daylight Time)
Почему и как я могу получить на следующий день, как сегодня.
Update
То, что я, наконец, сделал именно это. Надеюсь, это поможет другим.
var dateAsString = "2016-04-26";
var year = dateAsString.split('-')[0];
var month = dateAsString.split('-')[1];
var day = dateAsString.split('-')[2];
var date = new Date(Date.UTC(year, month - 1, day, 0,0,0));
date.setTime(date.getTime() + date.getTimezoneOffset() * 60 * 1000);
rpdDateControl.set_selectedDate(date);
Эта дата, очевидно, анализируется как дата UTC в полночь, поэтому почему она кажется «вчера» вам в вашем часовом поясе Восточного времени, так как вы на 4 часа меньше UTC (с учетом DST). – ManoDestra
Вы можете использовать универсальное время вместо локального времени, такого как var utcDate = new Date (Date.UTC (2016, 4, 26, 0, 0, 0)); –
По-прежнему получать объект Date с часовым поясом! Это от консоли Chrome: новая дата (Date.UTC (2016,04,26,0,0,0)) ср. 25 мая 2016 20:00:00 GMT-0400 (восточное дневное время) –