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

时间:2018-10-06 15:11:33

标签: javascript html date

我做了一些搜索,或者没有找到合适的示例,或者也许我只是不太了解某些概念。

我正在尝试编写一个函数,该函数使用户(从表单中)输入日期并在接下来的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>

编辑:

function date() {
  var input = document.getElementById("input").value;
  var date = new Date(input);
  for (var i = 0; i < 50; i++) {
    var y = 1;
    date = new Date(date.getFullYear() + y, date.getMonth(), date.getDate()); 
    if(date.getDay() == 5){
      console.log("friday" + date);
    }
    else{
      console.log("other day");
    }
  } 
}

不确定为什么控制台显示的日期早于用户输入的日期。

2 个答案:

答案 0 :(得分:1)

plusYear()?您从哪里获得此功能的?

尝试类似

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

应该工作。

答案 1 :(得分:0)

是的,plusYears不是Date上的函数。我使用this question中推荐的方法来构造新日期(date = new Date(date.getFullYear() + i, date.getMonth(), date.getDate()))。另外,星期五是第5天(而不是第6天)。请参阅下面的嵌入式注释:

<script>
  function date() {
    var weekday = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
    var input = document.getElementById("input").value;
    var date = new Date(input);
    console.log("date: " + date);
    for (var i = 0; i < 50; i++) {
      date = new Date(date.getFullYear() + i, date.getMonth(), date.getDate()); // construct new date like this
      console.log("date: " + date);
      if (date.getDay() == 5) { // Friday is 5 (not 6)
        // use date.getDay() to get the correct index of the day name in your week array.
        // Also, append this new value so that it doesn't overwrite the other.
        // You may want to add formatting etc.
        document.getElementById('output').append(document.createTextNode(date + ", " + weekday[date.getDay()]));   
      }
    }
  }
</script>

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