我做了一些搜索,或者没有找到合适的示例,或者也许我只是不太了解某些概念。
我正在尝试编写一个函数,该函数使用户(从表单中)输入日期并在接下来的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");
}
}
}
不确定为什么控制台显示的日期早于用户输入的日期。
答案 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>