Javascript 查找任何一年的星期几,plusYears()函数不起作用

Javascript 查找任何一年的星期几,plusYears()函数不起作用,javascript,html,date,Javascript,Html,Date,我做了一些搜索,要么没有找到一个合适的例子,要么可能我还不能完全掌握一些概念 我正在尝试编写一个函数,让用户输入一个日期(来自表单),并在未来50年中每年返回该日期落在星期五的日期。我确信我最初的方法有几个地方不对劲,但是我主要关心的是.plusYears()函数不起作用。感谢您的反馈 <script> function date() { var weekday = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday',

我做了一些搜索,要么没有找到一个合适的例子,要么可能我还不能完全掌握一些概念

我正在尝试编写一个函数,让用户输入一个日期(来自表单),并在未来50年中每年返回该日期落在星期五的日期。我确信我最初的方法有几个地方不对劲,但是我主要关心的是.plusYears()函数不起作用。感谢您的反馈

<script>
function date() {
  var weekday = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
  var input = document.getElementById("input").value;
  var date = new Date(input).getUTCDate();
  console.log("date: " + date);
  for (var i = 0; i < 50; i++){
    date = date.plusYears(i);
    console.log("date: " + date);
    if(date.getDay() == 6){
    document.getElementById('output').textContent = date.getDate() + ", " + weekday[date];
    }
  }
}
</script>

<form>
  <input type="date" placeholder="dd:mm:yy" id="input" />
  <input type="button" value="weekday" onclick="date()" />
</form>
  <p id="output"></p>

功能日期(){
var weekday=[‘星期日’、‘星期一’、‘星期二’、‘星期三’、‘星期四’、‘星期五’、‘星期六’、‘星期日’];
var输入=document.getElementById(“输入”).value;
var date=新日期(输入).getUTCDate();
控制台日志(“日期:+日期);
对于(变量i=0;i<50;i++){
日期=日期加数(i);
控制台日志(“日期:+日期);
如果(date.getDay()==6){
document.getElementById('output').textContent=date.getDate()+“,”+工作日[日期];
}
}
}

编辑:

函数日期(){
var输入=document.getElementById(“输入”).value;
var日期=新日期(输入);
对于(变量i=0;i<50;i++){
变量y=1;
日期=新日期(date.getFullYear()+y,date.getMonth(),date.getDate());
如果(date.getDay()==5){
控制台日志(“星期五”+日期);
}
否则{
控制台日志(“其他日期”);
}
} 
}
不确定为什么控制台显示的日期早于用户输入的日期。

plusYear()?你从哪里得到这个函数的

试试像这样的东西

date.setFullYear(date.getFullyear() + i);

应该可以工作。

是的,
plusYears
不是上的函数。我使用中建议的方法构造新日期(
date=newdate(date.getFullYear()+I,date.getMonth(),date.getDate())
)。另外,星期五是第5天(不是第6天)。请参见下面的内联注释:


功能日期(){
var weekday=[‘星期日’、‘星期一’、‘星期二’、‘星期三’、‘星期四’、‘星期五’、‘星期六’、‘星期日’];
var输入=document.getElementById(“输入”).value;
var日期=新日期(输入);
控制台日志(“日期:+日期);
对于(变量i=0;i<50;i++){
日期=新日期(date.getFullYear()+i,date.getMonth(),date.getDate());//像这样构造新日期
控制台日志(“日期:+日期);
如果(date.getDay()==5){//星期五是5(不是6)
//使用date.getDay()获取周数组中日期名称的正确索引。
//另外,附加此新值,使其不会覆盖其他值。
//您可能需要添加格式设置等。
document.getElementById('output').append(document.createTextNode(date+”,“+weekday[date.getDay()]);
}
}
}

您希望
.plusYears()
做什么?那是从哪里来的?请注意,
.getUTCDate()
返回一个数字;特别是一个月中的日期值。当使用仅日期字符串时,getUTCDate可能会返回一个与本地日期不同的日期,在本地日期中,主机被设置为格林威治以西的时区。此外,2016年2月29日加上1年将是2017年3月1日。它可能只会得到一次年份,否则总是加1。对,因此
i
从0变为50。每次通过循环时,上一次迭代的年份值都会增加
i
,因此它会增加到2018年、2019年、2021年、2024年、2028年等。
date.setFullYear(date.getFullyear() + i);