Формат даты YYYY-MM-DD не работает в Safari - PullRequest
1 голос
/ 04 января 2012

У меня проблема с Safari, не распознающим формат даты 2012-01-03 (2012 год 3 января). У меня есть даты в массиве, а затем я хочу преобразовать их в этот формат - Вторник, январь 3

Работает в Chrome, но Safari выбрасывает undefined undefined NaN .

Код ниже ...

(function() {
    var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],
        months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec'];
    Date.prototype.getDayName = function() {
        return days[this.getDay()];
    };
    Date.prototype.getMonthName = function() {
        return months[this.getMonth()];
    };
})();

var issues = ['2012-01-03', '2012-01-02', '2012-01-01', '2011-12-31'];

for (var i = 0; i < issues.length; i++) {
      var d = new Date(issues[i]);
      var date = d.getDate(),
      weekday = d.getDayName(),
      month = d.getMonthName();
      day = weekday + ' ' + month + ' ' + date;               
      $('.datepicker').find('ul').append('<li class="issue_' + i + '">' + day + '</li>');
}   

Мне это нужно только для работы с Safari / Mobile Safari, поэтому я предпочитаю не использовать библиотеку js.

Ответы [ 2 ]

2 голосов
/ 04 января 2012

Простая отладка показывает ошибку:

var d = new Date(issues[i]);
console.log(d);

Не нравится формат даты.Вы можете изменить его примерно так:

var issues = ['01/03/2012', '01/02/2012', '01/01/2011', '12/31/2011'];

или сделать разделение и сделать это в формате, поддерживаемом всеми браузерами

var dateParts = issues[i].split(/-/);
var d = new Date(dateParts[0],parseInt( dateParts[1], 10) -1,dateParts[2]);

http://jsfiddle.net/TveJU/

0 голосов
/ 04 января 2012

Разбор дат в различных браузерах общеизвестно непоследователен и привередлив. Я всегда использовал Datejs (http://www.datejs.com/), симпатичная маленькая библиотека js, которая расширяет встроенный объект Date. Проверьте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...