当前位置: 首页 > 知识库问答 >
问题:

javascript - js,有一个365天的数组(根据2019年来计算),根据365数组中的某一个元素下标,计算出这个下标是在2019年中几月几日?

姬捷
2024-08-16

js,有一个365天的数组(根据2019年来计算),根据365数组中的某一个元素下标,计算出这个下标是在2019年中几月几日?

// 负荷值
const arr = [100,102,150,300,600,511,251,369,14,15,...365个元素]

比如:索引3(值:300),计算出是2019-01-04日,这样怎么写函数?

共有3个答案

司空赞
2024-08-16

新建1个365数组,如: ["2019-01-01","2019-01-02","2019-01-03","2019-01-04","2019-01-05",...],然后用下标去这个数组里匹配,找出 "2019-01-04"

邴景山
2024-08-16
new Date(2019,0,arr.indexOf(300)+1)
戚阳文
2024-08-16

为了计算给定索引对应的日期(假设数组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年不是闰年,所以上述代码是足够的。

 类似资料:
  • 本文向大家介绍C#根据年月日计算星期几的函数,包括了C#根据年月日计算星期几的函数的使用技巧和注意事项,需要的朋友参考一下 DateTime.Now.ToString("dddd",new System.Globalization.CultureInfo("zh-cn")); 今天在网上看见一些关于 C#实现的根据年月日计算星期几 的介绍:  算法如下: 基姆拉尔森计算公式 W= (d+2*m+3

  • 问题内容: 我在sql中有一个用户表,他们每个都有生日。我想将他们的出生日期转换为他们的年龄(仅年),例如日期:年龄:14,并将更改为年龄: 在这里,我想显示用户的日期: 问题答案: 功能:, MySQL > = 5.0.0 功能:,

  • 问题内容: 如何使用javascript从1-366计算一年中的某一天?例如: 1月3日 应该是 3 月3 日 。 2月1日 应该是 32 。 问题答案: 在OP的编辑之后: 编辑:上面的代码会失败时,是3月26日和10月29日之间的日期的时间是凌晨1点之前(如零时59分59秒)。这是因为该代码未考虑夏令时。

  • 通过v-for遍历数据 比如目前返回了长度为10的数据 arr = [0,1,2,3,4,5,6,7,8,9] 如果取前3项 通过 index > 3就能搞定 现在我想取其中的 1 4 7 怎么处理呢? 看了大家的回答 直接是取 1 4 7 那如果数组长度为20或者更长不是很不灵活 我的想法是如何实现类似3n-2的等差数列算法来取值

  • 我是Python'for'循环的新手,我正在尝试在数据框中计算一年中每一天的公式。我使用的公式如下:。为了进一步解释,我需要找到每天的最高和最低温度,将它们除以2,然后从该商中减去7。 以下是数据: 将“日期”列转换为格式: 输出显示已经正确分配了一年中的某一天。 下面是我正在尝试的循环: 但是,将产生以下错误: 如何正确编写此循环?

  • 问题内容: 我在计算本月下一个最后一天何时发送预定的通知时遇到问题。 这是我的代码: 这是导致问题的线,我相信: 如何使用日历正确设置下个月的通知的最后一天? 问题答案: 这将返回当前月份的实际最大值。例如,现在是leap年的2月,因此它返回29作为。