js日期二次封装

获取时间

    Date.prototype.Format = function(format){
        var o = {
            "M+" :  this.getMonth()+1,  //month
            "d+" :  this.getDate(),     //day
            "h+" :  this.getHours(),    //hour
            "m+" :  this.getMinutes(),  //minute
            "s+" :  this.getSeconds(), //second
            "q+" :  Math.floor((this.getMonth()+3)/3),  //quarter
            "S"  :  this.getMilliseconds() //millisecond
        }
        if(/(y+)/.test(format)) {
            format = format.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
        }
        for(var k in o) {
            if(new RegExp("("+ k +")").test(format)) {
                format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));
            }
        }
        return format;
    }

使用方法

var now=(new Date()).Format("yyyy-MM-dd hh:mm:ss");//当前日期
console.log((new Date()).Format("yyyy-MM-dd hh:mm:ss"));//2018-01-22 12:00:00
console.log((new Date()).Format("yyyy-MM-dd hh:mm"));   //2018-01-22 12:00
console.log((new Date()).Format("yyyy-MM-dd hh"));      //2018-01-22 12
console.log((new Date()).Format("yyyy-MM-dd"));         //2018-01-22
console.log((new Date()).Format("yyyy-MM"));            //2018-01
console.log((new Date()).Format("yyyy"));               //2018

处理时间

    Date.prototype.DateAdd = function(interval,number){
        number = parseInt(number);
        var date = new Date(this.getTime());
        //
        switch(interval){
            case "y": date.setFullYear(this.getFullYear()+number); break;
            case "m": date.setMonth(this.getMonth()+number); break;
            case "d": date.setDate(this.getDate()+number); break;
            case "w": date.setDate(this.getDate()+7*number); break;
            case "h": date.setHours(this.getHours()+number); break;
            case "n": date.setMinutes(this.getMinutes()+number); break;
            case "s": date.setSeconds(this.getSeconds()+number); break;
            case "l": date.setMilliseconds(this.getMilliseconds()+number); break;
        } 
        return date;
    }

使用方法

根据我们想要修改的时间单位,只需要在DateAdd("","") 里修改相应配置就可以了

//"d","m","y" 分别为日,月,年   "-1"为在当前日期基础上倒流一个单位
console.log(new Date().DateAdd('d',-1).Format('yyyy-MM-dd hh:mm:ss'));//今天前一天(昨天)
console.log(new Date().DateAdd('m',-1).Format('yyyy-MM-dd hh:mm:ss'));//本月上个月(如本月为1月,上个月就是上年的12月)
console.log(new Date().DateAdd('y',-1).Format('yyyy-MM-dd hh:mm:ss'));//今年前一年(去年)

计算当前日期在本月为第几周

    // 计算当前日期在本月份的周数  
    Date.prototype.getWeekOfMonth = function(weekStart) {  
        weekStart = (weekStart || 0) - 0;  
        if(isNaN(weekStart) || weekStart > 6)  
            weekStart = 0;  

        var dayOfWeek = this.getDay();  
        var day = this.getDate();  
        return Math.ceil((day - dayOfWeek - 1) / 7) + ((dayOfWeek >= weekStart) ? 1 : 0);  
    }

使用方法

var MonthWeek=(new Date()).getWeekOfMonth();
console.log(MonthWeek);//返回值为第几周

计算当前日期在本年度的周数

Date.prototype.getWeekOfYear = function(weekStart) { // weekStart:每周开始于周几:周日:0,周一:1,周二:2 ...,默认为周日  
    weekStart = (weekStart || 0) - 0;  
    if(isNaN(weekStart) || weekStart > 6)  
        weekStart = 0;    

    var year = this.getFullYear();  
    var firstDay = new Date(year, 0, 1);  
    var firstWeekDays = 7 - firstDay.getDay() + weekStart;  
    var dayOfYear = (((new Date(year, this.getMonth(), this.getDate())) - firstDay) / (24 * 3600 * 1000)) + 1;  
    return Math.ceil((dayOfYear - firstWeekDays) / 7) + 1;  
} 

使用方法

var YearWeek=(new Date()).getWeekOfYear();
console.log(YearWeek);//返回值为本年度的周数  

自己整理的一些常用日期

var now=new Date();当前时间
var day=now.getDay();//周几 1 、2、3、4、5、6、0
//当周日时,getDay()会返回0,此时将day=7;
if(day==0){
    var day=7;
}
//本周起始日期
var week=new Date().DateAdd('d',-(day-1)).Format('yyyy-MM-dd 00:00:00');
//本周日期
var weekDay=[];
var j=0;
for(var i=1;i<8;i++){
    weekDay[j]=new Date().DateAdd('d',-(day-i)).Format('MM-dd');
    j++;
}
//上周一
var sweek1=new Date().DateAdd('d',-(day+6)).Format('yyyy-MM-dd 00:00:00');
//上周日
var sweek7=new Date().DateAdd('d',-(day)).Format('yyyy-MM-dd 00:00:00');
//当前是该月第几周
var totalWeek=now.getWeekOfMonth();
//当前月在该年是第几个月
var totalMonth=now.getMonth();
//本月几号
var nowday=(new Date()).Format("d");
//当月第一天
var monthfristday=new Date().DateAdd('d',-(nowday-1)).Format('yyyy-MM-dd 00:00:00');
//本年第一天
var firstDay = new Date(now.getFullYear(),0,1);
//计算当前时间与本年第一天的时差(返回一串数值,代表两个日期相差的毫秒数)
var dateDiff = now - firstDay; 
var msPerDay = 1000 * 60 * 60 * 24; //一天的毫秒数
var diffDays = Math.ceil(dateDiff/ msPerDay);//当前时间与本年第一天的天数
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值