gpt4 book ai didi

javascript - Pikaday 日期范围不起作用

转载 作者:行者123 更新时间:2023-12-02 14:42:02 25 4
gpt4 key购买 nike

我使用了 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_));

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

然后:

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

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

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

所以你周一的代码没问题。如果您想获取下周五的日期,只需执行以下操作:

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

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

关于javascript - Pikaday 日期范围不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36931162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com