javascript 封装Date日期类实例详解
javascript-封装Date日期类
(一)对日期进行格式化
自定义Date日期类的format()格式化方法
方式一:(非原创)
//对Date的扩展,将Date转化为指定格式的String
//月(M)、日(d)、小时(H)、分(m)、秒(s)、季度(q)可以用1-2个占位符,
//年(y)可以用1-4个占位符,毫秒(S)只能用1个占位符(是1-3位的数字)
//例子:
//(newDate()).Format("yyyy-MM-ddHH:mm:ss.S")==>2016-09-1916:32:53.731
//(newDate()).Format("yyyy-M-dH:m:s:S")==>2016-9-1916:40:9:955
Date.prototype.Format=function(fmt){//author:meizz
varo={
"M+":this.getMonth()+1,//月份
"d+":this.getDate(),//日
"H+":this.getHours(),//小时
"m+":this.getMinutes(),//分
"s+":this.getSeconds(),//秒
"q+":Math.floor((this.getMonth()+3)/3),//季度
"S":this.getMilliseconds()//毫秒
};
if(/(y+)/.test(fmt))fmt=fmt.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));
for(varkino)
if(newRegExp("("+k+")").test(fmt))fmt=fmt.replace(RegExp.$1,(RegExp.$1.length==1)?(o[k]):(("00"+o[k]).substr((""+o[k]).length)));
returnfmt;
};
测试:
window.onload=function(){
vardate=newDate();
varb=date.toLocaleDateString();//获取的格式为:2016年9月19日
vard=date.toLocaleTimeString();//下午4:42:46
vare=date.toLocaleString();//2016年9月19日下午4:44:02
varf=date.toDateString();//MonSep192016
varg=date.toUTCString();//Mon,19Sep201608:45:42GMT
varh=date.toString();//MonSep19201616:46:23GMT+0800(中国标准时间)
//自定义日期格式
varc=date.Format("yyyy-MM-ddHH:mm:ss");//format()方法是自定义的
document.getElementById("aa").value=c;
};
(二)根据日期返回本周周一和周日的日期
/**
*根据日期返回本周周一和周日的日期
*@paramday
*参数日期
*@paramnum
*第几周
*@returnoneWeek
*周一,周日所在日期
*/
functiongetWeekDate(day,num){
num=num||0;
//返回值:周一和周日所在的日期
varoneWeek={};
//初始日期
varinitDate="";
//截取年月日
initDate=day.split('')[0];
//ie兼容性问题,将yyyy-MM-dd转换成yyyy/MM/dd
initDate=initDate.replace(/-/g,"/");
//将string转换成Date
initDate=newDate(Date.parse(initDate));//格式只能是yyyy/MM/dd
//返回day距离1970年1月1日0时0分的毫秒数
varnowTime=initDate.getTime();
//返回星期的某一天的数字:0(周日)到6(周六)
varweekNum=initDate.getDay();
//一天所代表的毫秒数
varoneDayTime=24*60*60*1000;
//显示周一
varMondayTime=nowTime-(weekNum-1)*oneDayTime;
//显示周日
varSundayTime=nowTime+(7-weekNum)*oneDayTime;
if(0!=num){
MondayTime+=7*num*oneDayTime;
SundayTime+=7*num*oneDayTime;
}
//初始化日期时间
varmonday=newDate(MondayTime);
varsunday=newDate(SundayTime);
//formatDate是自定义的格式化方法
monday=monday.formatDate('yyyy-MM-dd');
sunday=sunday.formatDate('yyyy-MM-dd');
oneWeek.Monday=monday;
oneWeek.Sunday=sunday;
returnoneWeek;
}
测试:
varweek=getWeekDate('2017-05-27',0);
console.log(week.Monday+","+week.Sunday);
注意:
Date.parse()具有兼容性问题,低版本IE浏览器不支持"yyyy-MM-dd"转换成Date,只支持"yyyy/MM/dd"转换成日期。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!