繁体   English   中英

Pikaday日期范围无效

[英]Pikaday date range don't work

我从pikaday开始使用了range函数。

使用onSelectI设置实际有效的日期范围。 这是我的示例:

onSelect: function(date) {
    var first_ = (date.getDate() - date.getDay())+1;
    var last_ = first_ + 4;

    var firstday = new Date(date.setDate(first_));
    var lastday = new Date(date.setDate(last_));

    picker.setStartRange(firstday);
    picker.setEndRange(lastday);

    picker.draw();

    var f_startdate = firstday.getDate()+'.'+(firstday.getMonth()+1)+'.'+firstday.getFullYear();
    var f_enddate = lastday.getDate()+'.'+(lastday.getMonth()+1)+'.'+lastday.getFullYear();
    var kw = getWeekNumber(date.getFullYear()+'/'+(date.getMonth()+1)+'/'+date.getDate());

    document.getElementById('calendar').value = f_startdate+' - '+f_enddate;
    // document.getElementById('calendar').value = 'KW: '+(kw+1);
}

但是,当我选择03.06.2016时,范围设置为“ 30.05.2016-03.05.2016”,并且输入错误。 也许有人可以帮助我。

这是一个工作示例: https : //jsfiddle.net/24aL9f21/1/

您的问题在这里:

var first_ = (date.getDate() - date.getDay())+1;

这样可以为您提供上一个星期一的日期,但也可以是负数。 6月3日是星期五(第5天),因此first_设置为:

3 - 5 + 1 = -1

然后:

var last_ = first_ + 4;

因此last_设置为3。现在,您执行以下操作:

var firstday = new Date(date.setDate(first_));

您实际上将date设置为-1,即5月30日,即该月初之前的日期。 setDate返回时间值,因此firstday是一个也设置为May 30的新Date实例。

然后:

var lastday = new Date(date.setDate(last_));

您将日期设置为5月3日(请记住,在上面的行中将日期设置为5月30日)。 同样, setDate方法返回时间值,因此将为该日期创建一个新的Date对象。 因此,您获得的日期为5月30日和5月3日(如果您选择date ,则将日期也设置为5月3日)。

QED(我的数学老师告诉我“ 很容易完成 ”)。 ;-)

因此,您星期一的代码很好。 如果要获取下一个星期五的日期,请执行以下操作:

var lastday = date.setDate(date.getDate() + 4);

这里的lastdaydate将引用相同的Date对象,但是创建另一个副本似乎没有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM