JS 题目:输入某年某月某日,判断这一天是这一年的第几天?

该代码示例定义了一个函数,用于根据输入的年、月、日计算日期在当年的总天数。它首先创建一个Date对象,然后设置年月日。通过for循环遍历到当前月的前一个月,累加每个月的天数,考虑到闰年的二月有29天。最后加上当前日期,输出结果。
摘要由CSDN通过智能技术生成

思路:创建一个函数,输入年月日,先创建一个时间对象,然后利用set方法将输入的年月日设置给时间对象,然后根据输入的月份,利用for循环,增加每一个月的天数,从一月增加到当前月的上一个月,最后再将日数加在一起,输出即可。

代码如下:

function getDays(year, month, date) {
    var d = new Date()
    d.setFullYear(year)
    d.setMonth(month - 1) // 0~11
    d.setDate(date)
    var y = d.getFullYear()
    var m = d.getMonth() // 0~11
    var d2 = d.getDate()
    var days = 0
    for (var i = 1; i <= m; i++) {
        if (m === 2) {
            if (y % 4 === 0 && y % 100 !== 0 || y % 400 === 0) {
                days += 29
            } else {
                days += 28
            }
        } else {
            if (m === 1 || m === 3 || m === 5 || m === 7 || m === 8 || m === 10 || m === 12) {
                days += 31
            } else {
                days += 30
            }
        }
    }
    days += d2
    console.log(`${d.toLocaleString()}是${y}年当中的第${days}天`);
}

解释:

第2行:创建一个日期对象。

第3~5行:设置时间对象。

第6~8行:取出时间对象的值。

第9行:声明一个变量,用于存储总共的天数。

第10~24行:用for循环,计算当前月份上一个月份前的所有天数和。注意,由于get方法取出的月份值m大小范围是0~11,因此for循环直接遍历到m,就是当前月份的前一个月。其中运营的算法是if判断,符合月份的则增加对应的天数,遇到闰年二月为29天,所以要先判断是否为二月,然后判断是否为闰年。

第25行:再加上当前月份的天数,也就日值。

第26行:模板字符串拼接。

代码演示

getDays(2023, 3, 6)

输出:

2023/3/6 23:12:09是2023年当中的第62天

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值