0

我正在使用带有多日期选项的 bootstzrap 日期选择器

当我使用

.datepicker("getDates")

我以“2014-10-13T22:00:00.000Z”格式获取日期,这会导致在尝试将此值插入页面重新加载时的同一个多日期选择器时出错,因为我使用的是 dd.mm.yyyy 格式

我用来插入日期的功能是

.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']。然后条件将是6 === 3并且parseDate将只返回当前日期。

在创建新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 回答