0

複数日付オプションをオンにしてboottzrap datepickerを使用しています

私が使うとき

.datepicker("getDates")

「2014-10-13T22:00:00.000Z」の形式で日付を取得します。これは、dd.mm.yyyy 形式を使用しているため、ページのリロード時にこの値を同じ multidatepicker に挿入しようとするとエラーになります。

日付を挿入するために使用する関数は

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

nbworkersDates[i][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"],"","",""]]
4

1 に答える 1

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']ます。次に、条件はparseDateは現在の日付のみを返します6 === 3

前に新しいDateオブジェクトを作成'setDates'('setUTCDates'代わりに使用)、時間部分はゼロにする必要があります。(

$('#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));
}));
于 2014-10-14T13:36:52.307 に答える