创建函数getDays,传递任意一个日期,返回这个日期是一年的第几天 (时间戳)

本文对比介绍了三种方法来计算给定日期是一年中的第几天:方法一是直接使用时间戳计算,方法二是考虑闰年并累加月份天数,方法三是通过创建特定日期对象进行差分。展示了如何在JavaScript中实现这些功能并提供示例结果。
摘要由CSDN通过智能技术生成
// 创建函数getDays,传递任意一个日期,返回这个日期是一年的第几天

// 方法1  直接用时间戳相减,不用看是否是闰年

function getDays(n) {
    // 时间转为系统存储格式
    var t1 = new Date(n);
    // console.log(t1) //2020-09-30T16:00:00.000Z
    // 转时间戳 getTime() 换算为毫秒数
    var t2 = t1.getTime() / 1000
    // console.log(t2); //1601481600
    var y1 = t1.getFullYear()
    // console.log(y1) //2022
    var y2 = new Date(y1, 0, 1)   //  0是月份的下标,代表1月
    // console.log(y2) //2021-12-30T16:00:00.000Z
    // 年份转时间戳 getTime() 换算为毫秒数
    var y3 = y2.getTime() / 1000
    // console.log(y3) //1580486400
    var total = t2 - y3
    // console.log(total)  // 20995200
    var day = parseInt(total / (60 * 60 * 24))+1 
     // 为什么+1,因为var y2 = new Date(y1, 0, 1)的原始有1天,,时间戳相减时,多减了1天
    console.log(y1 + '年,' + '第' + day + '天')
}
getDays('2022/1/2') //2022年,第2天
getDays('2023/2/1') //2023年,第32天
getDays('2000/3/1') //2000年,第61天
getDays('2001/3/1') //2001年,第60天





// 方法2  判断闰年,然后把月份相加,再把不够一个月的日子相加

function getdays2(m) {
    // 得到年份,用来判断是不是闰年
    var year1 = new Date(m).getFullYear();
    // console.log(year1)  //2023
    // 得到月份,用来判断循环几次
    var month = new Date(m).getMonth();
    // console.log(month)   //1  月份0-11,为啥这里不加1,因为1月是满月的,后一个月是不满月的
    for (var i = 0, sum = 0; i < month; i++) {
        var arr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        //四年一闰,百年不闰;四百年再闰
        if (year1 % 4 === 0 && year1 % 100 !== 0 || year1 % 400 === 0) {
            // 闰年,2月份为29天
            arr[1] = 29;
        }
        sum += arr[i]

    }
    // getDate() 得到日期 + 月份的日=多少天
    console.log(year1 + '年,' + (sum + new Date(m).getDate()) + '天-')
}
getdays2('2023/2/1') // 2023年,32天-
getdays2('2000/3/1') //2000年,第61天-
getdays2('2000/4/18') //2000年,109天-


//方法3
function getDays3(year,month,date){
    // 创建Date对象保存这个日期  月份是下标0-11
    var  d1=new Date(year,month-1,date+1)  
    console.log(d1) //2022-01-02T16:00:00.000Z
    // 创建Date对象保存这一年的第一天
    var d2=new Date(year,0,1)
    // 计算两者相差的毫秒   时间戳getTime()
    var d=d1.getTime()-d2.getTime()
    // console.log(d)  92448000000
    return d/(24*60*60*1000)
}
console.log(getDays3(2022,1,2))    //2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值