grigor007
@grigor007
http://goldapp.ru

Почему javascript Date() работает неверно?

Здравствуйте,

сервер передает мне дату в формате RFC 2822: '2015-06-22T09:00:00+03:00'

Я использую метод Date() для работы с ней. Несмотря на то, что в формате RFC 2822 передается часовой пояс, javascript все равно после создания объекта date() показывает мне время с учетом таймзоны пользователя.

Как мне этого избежать? Надо выводить дату в зависимости от переданного часового пояса.

var curSchDate = new Date('2015-06-22T09:00:00+03:00');

console.log(curSchDate);
Выведет Date {Mon Jun 22 2015 12:00:00 GMT+0600}
  • Вопрос задан
  • 2277 просмотров
Пригласить эксперта
Ответы на вопрос 3
AMar4enko
@AMar4enko
Таково поведение Date в JavaScript. Но заметьте, время он вам показывает правильное, но в вашем текущем часовом поясе.
А вот если бы вам сервер не передавал временную зону, то вам бы выводилось
Mon Jun 22 2015 09:00:00 GMT+0600

Денис Инешин вам дал самый правильный совет - использовать momentjs, т.к. это своего рода маст-хэв для JS-разработчика для работы с датами, как в плане арифметики (начало месяца, конец недели и прочее), так и в плане форматирования дат с поддержкой локалей.
Ответ написан
IonDen
@IonDen
JavaScript developer. IonDen.com
Попробуйте через momentjs.com
Ответ написан
@jekaD
function formatDate(date) {

  //получаем день
  var dd = date.getDate();
  if (dd < 10) dd = '0' + dd;
  
  //получаем месяц
  var mm = date.getMonth() + 1;
  if (mm < 10) mm = '0' + mm;

  //получаем год
  var yy = date.getFullYear() % 100;
  if (yy < 10) yy = '0' + yy;

  return dd + '.' + mm + '.' + yy;
}

formatDate( new Date() );
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы