Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何计算和检查每两周一次的日期_Javascript_Date_Recurrence - Fatal编程技术网

Javascript 如何计算和检查每两周一次的日期

Javascript 如何计算和检查每两周一次的日期,javascript,date,recurrence,Javascript,Date,Recurrence,我真的需要你的帮助 假设我的标定开始日期为:2016年12月19日,由变量x 如何编写JavaScript函数,以便它根据变量y定义的x检查当前日期,并根据重复日期(14)天检查当前日期 var y = recurrence is every 14 days, thereafter from the date (x) with no end date specified (unlimited) 前 如果Date.now()==1482181410856,则从现在起的14天将是148218141

我真的需要你的帮助

假设我的标定开始日期为:2016年12月19日,由变量
x

如何编写JavaScript函数,以便它根据变量
y
定义的
x
检查当前日期,并根据重复日期(14)天检查当前日期

var y = recurrence is every 14 days, thereafter from the date (x) with no end date specified (unlimited)

如果
Date.now()==1482181410856
,则从现在起的14天将是
1482181410856+(14*24*60*60*1000)==1483391010856

let y = new Date(Date.now() + (14 * 24 * 60 * 60 * 1000));
console.log(y.toUTCString()); // "Mon, 02 Jan 2017 21:03:30 GMT"

假设您确实希望比较精确的日期,即毫秒,则:

var present_date = new Date();
if(present_date.getTime() === x.getTime()) alert("Today is the same date as x");
else {
    var y = new Date(x.getTime());
    y.setDate(y.getDate() + 14); // add 14 days
    if(present_date.getTime() === y.getTime()) alert("Today is the same date as y");
}
但大多数情况下,我们希望将日期比较为整天,而不是毫秒,因此您必须比较范围(从午夜到晚上11:59)。。。在这种情况下,我建议你使用图书馆来让你的生活更轻松,比如


希望这有帮助

这可能是的复制品

如果你有一个开始日期,比如2016年12月20日,你可以通过简单地将14天添加到该日期来计算14天。然后,您可以检查今天的日期是否为其中一个日期,例如

//创建2016年12月20日00:00:00的日期
var startDate=新日期(2016年11月20日);
//创建开始日期+14天,时间为00:00:00
var startPlus14=新日期(startDate);
startPlus14.setDate(startPlus14.getDate()+14);
//今天开始,将时间设置为00:00:00.000
var today=新日期();
今天,设定时间(0,0,0,0);
如果(+今天==+开始日期){
log(“今天是开始日期”);
}否则如果(+今天==+startPlus14){
log(“今天是开始日期后的14天”);
}否则{
console.log(“今天既不是开始,也不是开始后14天”);

}
您可以获得开始日期和当前日期之间的天数差,然后检查该数字是否为14的倍数

功能处理asutc(日期){
var结果=新日期(日期);
result.setMinutes(result.getMinutes()-result.getTimezoneOffset());
返回结果;
}
函数日期之间(开始日期、结束日期){
var毫秒Sperday=24*60*60*1000;
返回数学地板((处理时间(结束日期)-处理时间(开始日期))/毫秒/天);
}
var标定日期=新日期(“2016-12-19”),
今天=新日期(),
天=日之间(分界日期,今天),
DayStall=14-天数%14,
rec=天数%14==0,
d=新日期();
d、 setDate(今天.getDate()+DayStall);
var nextDate=(d.getDate()+“/”+(d.getMonth()+1)+“/”+d.getFullYear());

console.log(“Days diff=“+Days+”.Recurs today=“+rec+”.Next in“+daystill+”Days”(+nextDate.toString()+”))因此,向日期对象添加14天。您可以获取两个日期之间的天数差(),然后检查该数字是否可被14整除(使用模数),可能是的重复。同样的方法可以用来加或减14天。我喜欢这种方法,但y是动态的,2017年1月2日、2017年1月16日、2016年1月30日等等,没有结束日期。我想它需要检查当前日期与某类事件的循环?因此,是的,您将有某种类型的循环,如果您知道未来需要检查的距离,则使用for循环,或者在到达某个日期之前执行/while循环。。。你到底想做什么?这可能会帮助我向你展示如何继续。我试图确定x日期后每14天(y)的日期,因此如果x日期=2016年12月19日,y日期=2016年1月2日,如果x日期=2017年1月2日,y日期=2017年1月16日,对-但最终你必须停止-否则你将永远生成日期但是,这里有一种方法可以找到接下来的3个日期:for(var loop=1;loop)并非所有的日期都是24小时,因此这不会可靠地返回从今天起14天的日期。最好在日期中添加14天。感谢从这个答案中获取的
treatAsUTC
daysBetween
脚本:
var present_date = new Date();
if(present_date.getTime() === x.getTime()) alert("Today is the same date as x");
else {
    var y = new Date(x.getTime());
    y.setDate(y.getDate() + 14); // add 14 days
    if(present_date.getTime() === y.getTime()) alert("Today is the same date as y");
}