当前位置:首页 > 技术分享 > 详情
sousuo
sousuo

原生js获得当前日期和昨天日期,以及几天前的日期代码

上传时间:2022-01-05            浏览次数:141

js获得日期,是比较灵活的。但确实也牵涉到一些逻辑上的东西,比如说一个月最后一天的处理。比如今天是:2022-1-5,那么明天呢,就是日期+1,但如果月末,有可能是30号,也可以是31号,这怎么处理,最近思考了一下,决定这样写,更简单一些:

一、今天的日期(结果实例:2022-1-5)

var date_today=new Date();

var today=date_today.getFullYear()+'-'+(date_today.getMonth()+1)+'-'+date_today.getDate();

结果实例:2022-1-5

二、明天的日期(结果实例:2022-1-6)

思路:获得当前的时间戳,然后加1天,得出明天时间戳,然后再转成想要的格式:

var date_tomorrow=new Date(Date.parse(new Date())+24*60*60*1000);

var tomorrow=date_tomorrow.getFullYear()+"-" + (date_tomorrow.getMonth()+1) +"-"+date_tomorrow.getDate();

结果实例:2022-1-6

三、7天前的日期(结果实例:2021-12-29)

思路:获得当前的时间戳,然后加1天,得出明天时间戳,然后再转成想要的格式:

var date_day7=new Date(Date.parse(new Date())-7*24*60*60*1000);

var day7=date_day7.getFullYear()+"-" + (date_day7.getMonth()+1) +"-"+date_day7.getDate();

结果实例:2021-12-29

结论:通过时间戳,进行日期的计算,更容易,更易读。

当然,这个获得日期比较简单,没有特别的格式要求,如果是有的要求月份、日期两位数,或者各种格式要求的,可以用以下方法:

function dateFormat(fmt,date) {
    let ret;
    const opt = {
        "Y+": date.getFullYear().toString(),        // 年
        "m+": (date.getMonth() + 1).toString(),     // 月
        "d+": date.getDate().toString(),            // 日
        "H+": date.getHours().toString(),           // 时
        "M+": date.getMinutes().toString(),         // 分
        "S+": date.getSeconds().toString()          // 秒
        // 有其他格式化字符需求可以继续添加,必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        };
    };
    return fmt;
}

用法:

let date = new Date();
dateFormat("YYYY-mm-dd HH:MM", date);
结果:2019-06-06 19:45

发表评论
请遵守网络文明公约,理性发言
访客头像

还没有人来评论,快来抢个沙发吧!

0371-56789390
公司地址

郑州市花园路东风路向西300路南弘熹台22层

联系我们