gpt4 book ai didi

javascript - 循环中的一年中的某一天

转载 作者:行者123 更新时间:2023-11-30 05:54:22 27 4
gpt4 key购买 nike

我正在尝试从循环中的某天获取日期。该代码在最初几天有效,从那时起它返回随机日期。

这里有什么帮助吗?

var now = new Date();
var initDate = new Date(now.getYear() + 1900, 0);

for (var i = 1 ; i <366 ; i++) {
var day = dateFromDay(i, initDate);
document.write(" Day " + i + " : " + day);
document.write("<br>");
}

function dateFromDay(day, initDate) {
var months = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];

var cur = new Date(initDate.setDate(day));
cur = months[cur.getMonth()] + " " + cur.getDate();
return cur;
}

输出:

...
...
Day 29 : Jan 29
Day 30 : Jan 30
Day 31 : Jan 31
Day 32 : Feb 1
// From here the output gets messed up
Day 33 : Mar 4
Day 34 : Apr 3
Day 35 : May 5
Day 36 : Jun 5
Day 37 : Jul 7
Day 38 : Aug 7
Day 39 : Sep 8
Day 40 : Oct 10
Day 41 : Nov 10
Day 42 : Dec 12
Day 43 : Jan 12
Day 44 : Feb 13
...
...

最佳答案

在您的“initDate”变量上调用 setDate() 更新该日期。因此,一旦您将 1 月溢出到 2 月,下一个调用将立即溢出到 月。

您不需要“initDate”变量。从当前年份、一月 (0) 以及您想要的任何天数每次调用该函数 时新构建的日期开始。生成的 Date 实例将是您的日期。

因此:

function dayNumberToDate( dayNumber ) {
var thisYear = new Date().getFullYear(); // no need to add 1900
return new Date(thisYear, 0, dayNumber);
}

alert(dayNumberFromDate( 271 )); // alerts Thu Sep 27 2012 00:00:00 GMT-0500 (CDT) (for me)

关于javascript - 循环中的一年中的某一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12860190/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com