【问题标题】:bootstrap datepicker multidates getDates引导 datepicker 多日期 getDates
【发布时间】:2014-12-09 06:03:13
【问题描述】:

我正在使用带有多日期选项的 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"],"","",""]]

【问题讨论】:

  • 您是否要插入字符串数组?
  • 是的,因为 setDates 接受数组
  • 我已经为你的问题写了答案。对你有帮助吗?

标签: twitter-bootstrap datepicker jquery-multidatespicker


【解决方案1】:

问题在于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 将只返回当前日期。

在'setDates' 之前创建新的Date 对象(改用'setUTCDates'),时间部分应为零。 (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));
}));

【讨论】:

  • 找到了我的错误并感谢解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
  • 2020-03-30
相关资源
最近更新 更多