Javascript 使用JS返回一周中下一个特定日期的日期,但会得到不想要的结果
我有一个JS脚本,可以获取即将到来的星期二和星期四的日期,但是今天注意到星期四的日期已经过了。我认为这与接近6月底有关,但不确定如何修复。有什么想法吗 当前结果: 6月30日,星期二 3月10日,星期四 预期结果: 6月30日,星期二 7月2日,星期四Javascript 使用JS返回一周中下一个特定日期的日期,但会得到不想要的结果,javascript,jquery,date,Javascript,Jquery,Date,我有一个JS脚本,可以获取即将到来的星期二和星期四的日期,但是今天注意到星期四的日期已经过了。我认为这与接近6月底有关,但不确定如何修复。有什么想法吗 当前结果: 6月30日,星期二 3月10日,星期四 预期结果: 6月30日,星期二 7月2日,星期四 var today=新日期(); var dayOfWeek=today.getDay(); var月=[ “一月”, “二月”, “三月”, "四月",, “五月”, “六月”, “七月”, “八月”, "九月",, “十月”, "十一月",
var today=新日期();
var dayOfWeek=today.getDay();
var月=[
“一月”,
“二月”,
“三月”,
"四月",,
“五月”,
“六月”,
“七月”,
“八月”,
"九月",,
“十月”,
"十一月",,
"十二月";;
函数getNextDate(d){
var date=today.getDate();
while(today.getDay()!==d){
today.setDate(++date);
}
今天回来;
}
var getOrdinal=函数(n){
变量s=[“th”、“st”、“nd”、“rd”],
v=n%100;
返回n+(s[(v-20)%10]| | s[v]| | s[0]);
}; // 学分:http://forums.shopify.com/categories/2/posts/29259
var tueDate=getNextDate(2);
tueDate='tueDate',+month[tueDate.getMonth()]+''+getOrdinal(tueDate.getDate());
var thuDate=getNextDate(4);
thuDate='thuday',+month[thuDate.getMonth()]+''+getOrdinal(thuDate.getDate());
如果(星期日<3 | |星期日>4){
$('#event1').html(tueDate);
$('#event2').html(thuDate);
}否则{
$('#event1').html(thuDate);
$('#event2').html(tueDate);
}
Todayvar date=Today.getDate()代码>返回30。今天做setDate(++date)代码>将日期设置为31,date对象将其正确解释为7月1日
但现在在下一次迭代中,您将增加原始日期,即32天。将7月1日设置为32日将导致“7月32日”,即8月1日。接下来是“八月三十三日”,也就是九月二日,以此类推。它会一直持续到下一年3月10日星期四降落
您需要做的是在循环中每次刷新一天,这样当月份发生变化时,它就会正确地返回到1
var date;
while (today.getDay() !== d) {
date = today.getDate();
today.setDate(++date);
}
var today=新日期();
var dayOfWeek=today.getDay();
var月=[
“一月”,
“二月”,
“三月”,
"四月",,
“五月”,
“六月”,
“七月”,
“八月”,
"九月",,
“十月”,
"十一月",,
"十二月";;
函数getNextDate(d){
风险值日期;
while(today.getDay()!==d){
date=today.getDate();
today.setDate(++date);
}
var getOrdinal=函数(d){
变量s=[“th”、“st”、“nd”、“rd”],
v=n%100;
返回n+(s[(v-20)%10]| | s[v]| | s[0]);
};
今天回来;
}
var getOrdinal=函数(n){
变量s=[“th”、“st”、“nd”、“rd”],
v=n%100;
返回n+(s[(v-20)%10]| | s[v]| | s[0]);
}; // 学分:http://forums.shopify.com/categories/2/posts/29259
var tueDate=getNextDate(2);
tueDate='tueDate',+month[tueDate.getMonth()]+''+getOrdinal(tueDate.getDate());
var thuDate=getNextDate(4);
thuDate='thuday',+month[thuDate.getMonth()]+''+getOrdinal(thuDate.getDate());
如果(星期日<3 | |星期日>4){
$('#event1').html(tueDate);
$('#event2').html(thuDate);
}否则{
$('#event1').html(thuDate);
$('#event2').html(tueDate);
}
事件1
事件2
我会改变你获取日期的方式,我会发送两个参数。第一个是第一天或第二天,下一个是你想要的日期(周一、周二等)。像这样:
function getNextDate(i,d) {
if(i==1){
if(today.getDay()==d)
return today;
else{
var tue=today;
while(tue.getDay()!=d){
tue.setDate(tue.getDate() + 1);
}
return tue;
}
}else{
var thur=today;
thur.setDate(thur.getDate() + 1);
while(thur.getDay()!=d){
thur.setDate(thur.getDate() + 1);
}
return thur;
}
}
这是一个完美的答案,有详细的解释。我在学习,有时会迷失在每一个循环中。谢谢谢谢,很有趣。谢谢我会玩这个选项只是为了学习。谢谢。
function getNextDate(i,d) {
if(i==1){
if(today.getDay()==d)
return today;
else{
var tue=today;
while(tue.getDay()!=d){
tue.setDate(tue.getDate() + 1);
}
return tue;
}
}else{
var thur=today;
thur.setDate(thur.getDate() + 1);
while(thur.getDay()!=d){
thur.setDate(thur.getDate() + 1);
}
return thur;
}
}