0

Я использую bootstzrap DatePicker с опцией multidates насамозагрузки Datepicker multidates getDates

, когда я использую

.datepicker("getDates") 

я получить дату в формате "2014-10-13T22: 00: 00.000Z", что приводит к ошибка при попытке вставить эти значения в тот же multidatepicker на перезагрузки страницы, так как я использовать формат дд.мм.гггг

Funciton я использую для вставки даты является

.datepicker("setDates",nbworkersDates[i][0]) 

где nbworkersDates [я] [0] является массивом элементов

ошибка я получаю то, что все даты установлены на сегодня любые предложения, как решить эту проблему? спасибо

это весь мой код, чтобы заполнить строку с данными

for (var i in nbworkersDates) { 
    var innerdata = (nbworkersDates[i]); 
    $('.workerDatesrow').each(function(i,r){ 
     //console.log(nbworkersDates[i][0]); 
     //$('.nbworkersDate',r).val(nbworkersDates[i][0]), 
     $('.nbworkersDate',r).datepicker({ 
      multidate: true, 
      format: 'dd.mm.yyyy', 
      multidateSeparator: ',' 
         }).datepicker('setUTCDates', nbworkersDates[i][0].map(function(x) { 
          console.log('datum '+ x); 
          return new Date(x.substr(0, 10)); 
    })); 
     $('.nbworkersDate', r).datepicker("setDates",nbworkersDates[i][0]), 
     $('.nbworkersnumber',r).val(nbworkersDates[i][1]), 
     $('.nbworkersfrom',r).val(nbworkersDates[i][2]), 
     $('.nbworkersto',r).val(nbworkersDates[i][3]); 
     }); 

и данных в формате JSON

"nbworkersDates":[[["2014-10-13T22:00:00.000Z","2014-10-14T22:00:00.000Z","2014-10-15T22:00:00.000Z"],"","",""],[["2014-10-13T22:00:00.000Z","2014-10-20T22:00:00.000Z","2014-10-27T23:00:00.000Z"],"","",""]] 
+0

Вы пытаетесь вставить массив строк? – dizel3d

+0

Да, поскольку setDates принимает массив – Yebach

+0

Я написал ответ на ваш вопрос. Это полезно для вас? – dizel3d

ответ

2

Проблема заключается в том, что bootstrap-datepicker внутренний метод parseDate не может разобрать ваш строки даты. См. Строку 1541. Условие parts.length === fparts.length не выполняется для ваших строк. Например, '2014-10-14T00:00:00.000Z' будет разбит на parts = ['2014', '10', '14T00', '00', '00', '000Z'], когда format = 'yyyy-mm-ddT00:00:00.000Z' будет разбит на fparts = ['yyyy', 'mm', 'dd']. Тогда условие будет 6 === 3 и parseDate вернет только текущую дату.

Создать новый Date объект до 'setDates' (вместо этого использовать), часть времени должна быть равна нулю. (example)

$('#date').datepicker({ 
    multidate: true, 
    format: 'yyyy-mm-ddT22:12:34.000Z', 
    multidateSeparator: ', ' 
}).datepicker('setUTCDates', [ 
    '2014-10-14T22:00:00.000Z', 
    '2014-10-15T22:14:00.000Z', 
    '2014-10-16T22:20:00.798Z' 
].map(function(x) { 
    return new Date(x.substr(0, 10)); 
})); 
+0

нашел мою ошибку и спасибо за решение – Yebach