js,有一个365天的数组(根据2019年来计算),根据365数组中的某一个元素下标,计算出这个下标是在2019年中几月几日?
// 负荷值
const arr = [100,102,150,300,600,511,251,369,14,15,...365个元素]
比如:索引3(值:300),计算出是2019-01-04日,这样怎么写函数?
js,有一个365天的数组(根据2019年来计算),根据365数组中的某一个元素下标,计算出这个下标是在2019年中几月几日?
// 负荷值
const arr = [100,102,150,300,600,511,251,369,14,15,...365个元素]
比如:索引3(值:300),计算出是2019-01-04日,这样怎么写函数?
为了计算给定索引对应的日期(假设数组arr
实际上是与天数一一对应的,但在这个问题中我们主要关注日期计算,因此数组的内容本身并不影响日期的计算),你可以使用JavaScript的Date
对象和一些简单的日期计算逻辑。由于2019年不是闰年,所以它有365天。
下面是一个函数,它接受一个索引(假设为0到364之间的整数,代表一年中的某一天),并返回该索引对应的日期(格式为YYYY-MM-DD
):
function getIndexDate(index) {
// 假设输入是有效的(0 <= index < 365)
// 初始化日期为2019年的第一天
let date = new Date(2019, 0, 1); // 月份是从0开始的,所以0代表1月
// 由于JavaScript的Date对象月份是从0开始的,我们需要对月份加1以符合常规表示
const months = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];
// 将索引转换为天数并加到日期上
date.setDate(date.getDate() + index);
// 格式化日期
let formattedDate = date.getFullYear() + "-" +
months[date.getMonth()] + "-" +
// 使用padStart确保日期是两位数
(date.getDate() < 10 ? "0" : "") + date.getDate();
return formattedDate;
}
// 示例
console.log(getIndexDate(3)); // 应该输出 "2019-01-04"
请注意,这个函数假设输入的索引是有效的(即,在0到364之间,因为2019年有365天,但索引是从0开始的)。如果索引可能无效,你可能需要在函数内部添加一些错误检查逻辑。
此外,由于Date
对象在JavaScript中是以毫秒为单位的,但在这个例子中我们简单地通过setDate
方法增加了天数,这种方法对于非闰年的情况来说是有效的。如果你需要处理闰年,你可能需要稍微修改逻辑来检查年份是否为闰年,并相应地调整天数。但在这个特定问题中,由于2019年不是闰年,所以上述代码是足够的。
新建1个365数组,如: ["2019-01-01","2019-01-02","2019-01-03","2019-01-04","2019-01-05",...],然后用下标去这个数组里匹配,找出 "2019-01-04"
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
6 回答2.4k 阅读
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决