JavaScript. Парсинг даты не работает в Safari

203
08 августа 2018, 18:00

Столкнулся с проблемой в элементарном, на первый взгляд, скрипте. Дату получаю из JSON, поэтому в примере просто показываю строку, в виде которой мне эта дата приходит. Далее перевожу ее в тип Date, потом объявляю локализацию для месяцев с разделителем в виде запятой. Далее выделяю в отдельные переменные день и месяц. Месяц подставляю локализованный из своей строки с месяцами. Потом вывожу день и месяц. И все работает во всех браузерах, кроме Safari. В сафари день выводится как "NaN", а месяц "undefined".

Пример на jsfiddle: https://jsfiddle.net/ArtHodorev/xpvt214o/317995/

HTML:

<div id="block">
  <span id="day"></span> <span id="month"></span>
</div>

JS:

var dateBase = "2018-06-07 11:50:42";
var dateDate = new Date(dateBase);
var monthArr = 'января,февраля,марта,апреля,мая,июня,июля,августа,сентября,октября,ноября,декабря'.split(',');
var dateMonth = monthArr[dateDate.getMonth()];
var dateDay = dateDate.getDay();
var day = $('#day');
var month = $('#month');
day.html(dateDay);
month.html(dateMonth);

CSS:

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}
#block {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  font-size: 25px;
  text-align: center;
  transition: all 0.2s;
  margin: 0 auto;
  width: 300px;
}

Подскажите, в чем может быть проблема?

Answer 1

Шаблон yyyy-MM-dd не является официально валидным для конструктора Date. Некоторые браузеры его поддерживают, но как видно не все.

Пример решения (date.js):

var dateBase = "2018-06-07 11:50:42";
var dateDate = Date.parseExact(dateBase, "yyyy-MM-dd hh:mm:ss");

moment.js:

var dateBase = "2018-06-07 11:50:42";
var dateDate= moment(dateBase).format("yyyy-MM-dd hh:mm:ss") 
READ ALSO
Как добавить свой пин в yandex map?

Как добавить свой пин в yandex map?

Никак не могу добавить свой пин в карту, дефолтные норм отображаются

218
Three.js + glTFLoader

Three.js + glTFLoader

Не понимаю что происходит в gltf лоадереПри загрузке стабильно выдает ~30(+/- 10шт) ошибок

198
Событие при resize окна

Событие при resize окна

Ребят уже битый час бьюсь, что не так со скриптом ? Собственно при разрешении меньше 992px окна браузера, должно отрабатывать событиеПо клику...

158
Brackets alert is not defined [дубликат]

Brackets alert is not defined [дубликат]

На данный вопрос уже ответили:

256