zoukankan      html  css  js  c++  java
  • JavaScript日期集合(今日,昨日,本周一,周末 ,月初,月末)

    闲聊新年第一天上班,看着自己15年年底写的代码,真心觉得很烂,因为年底没时间去写,一想着做后台管理需要获取一周的开始和结束日期,就慌了,项目赶着测试呢,还有好多事情未做,就直接抄袭了网上的一段错误代码,其实真的很简单,今天重新花点时间封装一下,以备后用,大神勿喷,谢谢!

    一、封装为jQuery版日期集合插件

    jQuery.dateCollections = (function(){
    
        var nowDate = new Date();
        var cloneNowDate = new Date();
    
        var fullYear = nowDate.getFullYear();
        var month = nowDate.getMonth() + 1; // getMonth 方法返回 0-11,代表1-12月
        var date = nowDate.getDate();
    
        var endOfMonth = new Date(fullYear, month, 0).getDate(); // 获取本月最后一天
    
        // 格式化日期 (2016-02-14)
        function getFullDate(targetDate) {
            var D, y, m, d;
            if (targetDate) {
                D = new Date(targetDate);
                y = D.getFullYear();
                m = D.getMonth() + 1;
                d = D.getDate();
            } else {
                y = fullYear;
                m = month;
                d = date;
            }
            m = m > 9 ? m : '0' + m;
            d = d > 9 ? d : '0' + d;
    
            return y + '-' + m + '-' + d;
        }
    
        // 一天的时间戳(毫秒为单位)
        var timestampOfDay = 1000*60*60*24;
    
        // 今天,昨天
        var fullToday = getFullDate();
        var fullYesterday = getFullDate(nowDate - timestampOfDay);
    
        var nowDay = nowDate.getDay(); // getDay 方法返回0 表示星期天
        nowDay = nowDay === 0 ? 7 : nowDay;
    
        // 本周一,本周末(星期天)
        // 注:在safari下(nowDate +- 0)不会转换为时间戳,这里在nowDate前加上运算符+,手动转换时间戳运算
        var fullMonday = getFullDate( +nowDate - (nowDay-1)*timestampOfDay );
        var fullSunday = getFullDate( +nowDate + (7-nowDay)*timestampOfDay );
    
        // 月初,月末
        var fullStartOfMonth = getFullDate( cloneNowDate.setDate(1) );
        var fullEndOfMonth = getFullDate( cloneNowDate.setDate(endOfMonth) );
    
        return {
            fullToday: fullToday,
            fullYesterday: fullYesterday,
            fullMonday: fullMonday,
            fullSunday: fullSunday,
            fullStartOfMonth: fullStartOfMonth,
            fullEndOfMonth: fullEndOfMonth
        };
    
    }());

    二、封装为模块,可用于webpack工具打包

    var nowDate = new Date();
    var cloneNowDate = new Date();
    
    var fullYear = nowDate.getFullYear();
    var month = nowDate.getMonth() + 1; // getMonth 方法返回 0-11,代表1-12月
    var date = nowDate.getDate();
    
    var endOfMonth = new Date(fullYear, month, 0).getDate(); // 获取本月最后一天
    
    // 格式化日期 (2016-02-14)
    function getFullDate(targetDate) {
        var D, y, m, d;
        if (targetDate) {
            D = new Date(targetDate);
            y = D.getFullYear();
            m = D.getMonth() + 1;
            d = D.getDate();
        } else {
            y = fullYear;
            m = month;
            d = date;
        }
        m = m > 9 ? m : '0' + m;
        d = d > 9 ? d : '0' + d;
    
        return y + '-' + m + '-' + d;
    }
    
    // 一天的时间戳(毫秒为单位)
    var timestampOfDay = 1000*60*60*24;
    
    // 今天,昨天
    var fullToday = getFullDate();
    var fullYesterday = getFullDate(nowDate - timestampOfDay);
    
    var nowDay = nowDate.getDay(); // getDay 方法返回0 表示星期天
    nowDay = nowDay === 0 ? 7 : nowDay;
    
    // 本周一,本周末(星期天)
    // 注:在safari下(nowDate +- 0)不会转换为时间戳,这里在nowDate前加上运算符+,手动转换时间戳运算
    var fullMonday = getFullDate( +nowDate - (nowDay-1)*timestampOfDay );
    var fullSunday = getFullDate( +nowDate + (7-nowDay)*timestampOfDay );
    
    // 月初,月末
    var fullStartOfMonth = getFullDate( cloneNowDate.setDate(1) );
    var fullEndOfMonth = getFullDate( cloneNowDate.setDate(endOfMonth) );
    
    module.exports = {
        fullToday: fullToday,
        fullYesterday: fullYesterday,
        fullMonday: fullMonday,
        fullSunday: fullSunday,
        fullStartOfMonth: fullStartOfMonth,
        fullEndOfMonth: fullEndOfMonth
    };

    总结:代码中就两难点,一是获取月末的最后一天日期,二是求 一周的开始和结束日期时间,第一点是知不知道的问题,第二点是比较今日与周末(星期天),周一各差几天,加减相差的时间戳获取相应的日期,总之说难不难,说不难可能当你在百忙之中确实要花点时间,保持清醒的头脑;

    转载请注明出处:博客园(杨君华的博客)

  • 相关阅读:
    使用httputils上传图片到服务器
    Android与服务器http连接模块代码
    简单的三次登陆和入门级九九乘法表的实现
    简单购物车的实现
    python常见数据类型
    python基础一
    python入门一
    python简介
    day1 java基础语法
    LeftStr函数使用
  • 原文地址:https://www.cnblogs.com/yangjunhua/p/5189014.html
Copyright © 2011-2022 走看看