依附prototype扩大的JavaScript常用函数库,日期对象
分类:pc28.am

DateAdd函数: 复制代码 代码如下: function DateAdd{ switch(interval.toLowerCase{ case "y": return new Date(date.setFullYear number)); case "m": return new Date(date.setMonth number)); case "d": return new Date(date.setDate number)); case "w": return new Date(date.setDate 7*number)); case "h": return new Date(date.setHours number)); case "n": return new Date(date.setMinutes number)); case "s": return new Date(date.setSeconds number)); case "l": return new Date(date.setMilliseconds(date.getMilliseconds; } } DateDiff函数: 复制代码 代码如下: function DateDiff{ var long = date2.getTime; //相差毫秒 switch(interval.toLowerCase{ case "y": return parseInt - date1.getFullYear; case "m": return parseInt - date1.getFullYear*12 -date1.getMonth; case "d": return parseInt; case "w": return parseInt; case "h": return parseInt; case "n": return parseInt; case "s": return parseInt; case "l": return parseInt; } } 兼容多浏览器的datediff函数 复制代码 代码如下:

今天在网上摘抄了些js中操作日期的相关方法,现在与大家分享一下。

复制代码 代码如下:/** 2 * 检索数组元素 3 * @param {o} 被检索的元素值 4 * @type int 5 * @returns 元素索引 6 */ 7 Array.prototype.contains = function { 8 var index = -1; 9 for(var i=0;i9?.toString():'0' ); str=str.replace 1)>9?.toString():'0' ; str=str.replace; str=str.replace(/w|W/g,Week[this.getDay; str=str.replace(/dd|DD/,this.getDate.toString():'0' this.getDate; str=str.replace); str=str.replace(/hh|HH/,this.getHours.toString():'0' this.getHours; str=str.replace(/h|H/g,this.getHours; str=str.replace(/mm/,this.getMinutes.toString():'0' this.getMinutes; str=str.replace(/m/g,this.getMinutes; str=str.replace(/ss|SS/,this.getSeconds.toString():'0' this.getSeconds; str=str.replace(/s|S/g,this.getSeconds; return str; } /** * 比较日期差 * @param {strInterval} 日期类型:'y、m、d、h、n、s、w' * @param {dtEnd} 格式为日期型或者 有效日期格式字符串 * @type int * @returns 比较结果 */ Date.prototype.dateDiff = function { var dtStart = this; if (typeof dtEnd == 'string' ) { //如果是字符串转换为日期型 dtEnd = StringToDate; } switch { case 's' :return parseInt / 1000); case 'n' :return parseInt / 60000); case 'h' :return parseInt / 3600000); case 'd' :return parseInt / 86400000); case 'w' :return parseInt / ; case 'm' :return -dtStart.getFullYear - ; case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear(); } } /** * 日期计算 * @param {strInterval} 日期类型:'y、m、d、h、n、s、w' * @param {Number} 数量 * @type Date * @returns 计算后的日期 */ Date.prototype.dateAdd = function { var dtTmp = this; switch { case 's' :return new Date ; case 'n' :return new Date

复制代码 代码如下:

复制代码 代码如下:

  • ; case 'h' :return new Date ; case 'd' :return new Date ; case 'w' :return new Date * Number)); case 'q' :return new Date, Number*3, dtTmp.getDate, dtTmp.getMinutes); case 'm' :return new Date, Number, dtTmp.getDate, dtTmp.getMinutes); case 'y' :return new Date Number), dtTmp.getMonth, dtTmp.getHours, dtTmp.getSeconds; } } /** * 取得日期数据信息 * @param {interval} 日期类型:'y、m、d、h、n、s、w' * @type int * @returns 指定的日期部分 */ Date.prototype.datePart = function{ var myDate = this; var partStr=''; var Week = ['日','一','二','三','四','五','六']; switch { case 'y' :partStr = myDate.getFullYear();break; case 'm' :partStr = myDate.getMonth() 1;break; case 'd' :partStr = myDate.getDate();break; case 'w' :partStr = Week[myDate.getDay()];break; case 'ww' :partStr = myDate.WeekNumOfYear();break; case 'h' :partStr = myDate.getHours();break; case 'n' :partStr = myDate.getMinutes();break; case 's' :partStr = myDate.getSeconds();break; } return partStr; } /** * 把日期分割成数组 * @type array * @returns 日期数组 */ Date.prototype.toArray = function() { var myDate = this; var myArray = Array(); myArray[0] = myDate.getFullYear(); myArray[1] = myDate.getMonth() 1; myArray[2] = myDate.getDate(); myArray[3] = myDate.getHours(); myArray[4] = myDate.getMinutes(); myArray[5] = myDate.getSeconds(); return myArray; } /** * 取得当前月份的天数 * @type int * @returns 天数 */ Date.prototype.daysOfMonth = function(){ var myDate = this; var ary = myDate.toArray(); var date1 = (new Date; var date2 = date1.dateAdd; var result = daysDiff(date1.format,date2.format; return result; } /** * 判断闰年 * @type boolean * @returns 是否为闰年 true/false */ Date.prototype.isLeapYear = function() { return %4&&0!=0)||@0==0))); } /** * 比较两个日期的天数差 * @param {DateOne} 日期一 * @param {DateOne} 日期二 * @type int * @returns 比较结果 */ function daysDiff { var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ; var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ; var OneYear = DateOne.substring(0,DateOne.indexOf ; var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ; var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ; var TwoYear = DateTwo.substring(0,DateTwo.indexOf ; var cha=((Date.parse(OneMonth '/' OneDay '/' OneYear)- Date.parse(TwoMonth '/' TwoDay '/' TwoYear))/86400000); return Math.abs; } /** * 日期计算 * @param {strInterval} 日期类型:'y、m、d、h、n、s、w' * @param {Number} 数量 * @param {prmDate} 原日期 * @type Date * @returns 计算后的日期 */ function dateAdd(interval,number,prmDate){ number = parseInt; if =="string"){ prmDate = prmDate.split; --prmDate[1]; eval("var prmDate = new Date ")"); } if =="object"){ var prmDate = prmDate } switch{ case "y": prmDate.setFullYear number); break; case "m": prmDate.setMonth number); break; case "d": prmDate.setDate number); break; case "w": prmDate.setDate 7*number); break; case "h": prmDate.setHours number); break; case "n": prmDate.setMinutes number); break; case "s": prmDate.setSeconds number); break; case "l": prmDate.setMilliseconds(prmDate.getMilliseconds; break; } return prmDate; } /** * 获取字符串长度 * @type int * @returns 字符串长度 */ String.prototype.len = function() { var arr=this.match; return this.length (arr==null?0:arr.length); } /** * 字符串左取指定个数的字符 * @param {num} 获取个数 * @type string * @returns 匹配的字符串 */ String.prototype.left = function { if return; var str = this.substr return str; var n = str.len() - str.length; num = num - parseInt; return this.substr; } /** * 字符串右取指定个数的字符 * @param {num} 获取个数 * @type string * @returns 匹配的字符串 */ String.prototype.right = function { if return; var str = this.substr; if return str; var n = str.len() - str.length; num = num - parseInt; return this.substr; } /** * 字符串包含 * @param {string: str} 要搜索的子字符串 * @param {bool: mode} 是否忽略大小写 * @type int * @returns 匹配的个数 */ String.prototype.matchCount = function { return eval("this.match/g" .length"); } /** * 去除左右空格 * @type string * @returns 处理后的字符串 */ String.prototype.trim = function() { return this.replace; } /** * 去除左空格 * @type string * @returns 处理后的字符串 */ String.prototype.lTrim = function() { return this.replace; } /** * 去除右空格 * @type string * @returns 处理后的字符串 */ String.prototype.rTrim = function() { return this.replace; } /** * 字符串转换为日期型 * @type Date * @returns 日期 */ String.prototype.toDate = function() { var converted = Date.parse; var myDate = new Date; if {var arys= this.split; myDate = new Date(arys[0],--arys[1],arys[2]); } return myDate; }

/**
2 * 检索数组元素(原型扩展或重载)
3 * @param {o} 被检索的元素值
4 * @type int
5 * @returns 元素索引
6 */
7 Array.prototype.contains = function(o) {
8 var index = -1;
9 for(var i=0;i<this.length;i ){if(this[i]==o){index = i;break;}}
return index;
}

<script type="text/javascript">
Date.prototype.Format = function(fmt)
{
//author: meizz
var o =
{
"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 (var k in o)
if (new RegExp("(" k ")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00"

/**
* 日期格式化(原型扩展或重载)
* 格式 YYYY/yyyy/YY/yy 表示年份
* MM/M 月份
* W/w 星期
* dd/DD/d/D 日期
* hh/HH/h/H 时间
* mm/m 分钟
* ss/SS/s/S 秒
* @param {formatStr} 格式模版
* @type string
* @returns 日期字符串
*/
Date.prototype.format = function(formatStr){
var str = formatStr;
var Week = ['日','一','二','三','四','五','六'];
str=str.replace(/yyyy|YYYY/,this.getFullYear());
str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' (this.getYear() % 100));
str=str.replace(/MM/,(this.getMonth() 1)>9?(this.getMonth() 1).toString():'0'

  • o[k]).substr(("" o[k]).length)));
    return fmt;
    }
    Date.prototype.addDays = function(d)
    {
    this.setDate(this.getDate() d);
    };
    Date.prototype.addWeeks = function(w)
    {
    this.addDays(w * 7);
    };
    Date.prototype.addMonths= function(m)
    {
    var d = this.getDate();
    this.setMonth(this.getMonth() m);
    if (this.getDate() < d)
    this.setDate(0);
    };
    Date.prototype.addYears = function(y)
    {
    var m = this.getMonth();
    this.setFullYear(this.getFullYear() y);
    if (m < this.getMonth())
    {
    this.setDate(0);
    }
    };
    //测试 var now = new Date(); now.addDays(1);//加减日期操作 alert(now.Format("yyyy-MM-dd"));
    Date.prototype.dateDiff = function(interval,endTime)
    {
    switch (interval)
    {
    case "s": //計算秒差
    return parseInt((endTime-this)/1000);
    case "n": //計算分差
    return parseInt((endTime-this)/60000);
    case "h": //計算時差
    return parseInt((endTime-this)/3600000);
    case "d": //計算日差
    return parseInt((endTime-this)/86400000);
    case "w": //計算週差
    return parseInt((endTime-this)/(86400000*7));
    case "m": //計算月差
    return (endTime.getMonth() 1) ((endTime.getFullYear()-this.getFullYear())*12)-(this.getMonth() 1);
    case "y": //計算年差
    return endTime.getFullYear()-this.getFullYear();
    default: //輸入有誤
    return undefined;
    }
    }
    //测试 var starTime = new Date("2007/05/12 07:30:00"); var endTime = new Date("2008/06/12 08:32:02"); document.writeln("秒差: " starTime .dateDiff("s",endTime ) "<br>"); document.writeln("分差: " starTime .dateDiff("n",endTime ) "<br>"); document.writeln("時差: " starTime .dateDiff("h",endTime ) "<br>"); document.writeln("日差: " starTime .dateDiff("d",endTime ) "<br>"); document.writeln("週差: " starTime .dateDiff("w",endTime ) "<br>"); document.writeln("月差: " starTime .dateDiff("m",endTime ) "<br>"); document.writeln("年差: " starTime .dateDiff("y",endTime ) "<br>");
    </script>
  • (this.getMonth() 1));
    str=str.replace(/M/g,this.getMonth());
    str=str.replace(/w|W/g,Week[this.getDay()]);
    str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0'
  • this.getDate());
    str=str.replace(/d|D/g,this.getDate());
    str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0'
  • this.getHours());
    str=str.replace(/h|H/g,this.getHours());
    str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0'
  • this.getMinutes());
    str=str.replace(/m/g,this.getMinutes());
    str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0'
  • this.getSeconds());
    str=str.replace(/s|S/g,this.getSeconds());
    return str;
    }

具体扩展的方法如下:
parseCHS--静态方法。解析常用的中文日期并返回日期对象。
add--日期加减操作。[注:此函数在上传时还存在一个BUG。请下载后把此函数内的第一行"var regExp = /^d $/;" 改为 "var regExp = /^([ -])?d $/;", 要不然就做不了减法。]
dateDiff--日期差。开始日期与当前日期的差,返回差的绝对值。
getFirstWeekDays--获取当前日期所在年份中第一个星期的天数。
getLastWeekDays--获取当前日期所在年份中最后一个星期的天数。
getWeeksOfYear--获取当前日期所在年份的周数。
getWeek--获取当前日期所在是一年中的第几周。返回一个整数值。
getSeason--获取当前日期所在是一年中的第几季。返回一个季度整数值。
详细注释及参数,请参考JS文件内的注释。

/**
* 比较日期差(原型扩展或重载)
* @param {strInterval} 日期类型:'y、m、d、h、n、s、w'
* @param {dtEnd} 格式为日期型或者 有效日期格式字符串
* @type int
* @returns 比较结果
*/
Date.prototype.dateDiff = function(strInterval, dtEnd) {
var dtStart = this;
if (typeof dtEnd == 'string' ) { //如果是字符串转换为日期型
dtEnd = StringToDate(dtEnd);
}
switch (strInterval) {
case 's' :return parseInt((dtEnd - dtStart) / 1000);
case 'n' :return parseInt((dtEnd - dtStart) / 60000);
case 'h' :return parseInt((dtEnd - dtStart) / 3600000);
case 'd' :return parseInt((dtEnd - dtStart) / 86400000);
case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7));
case 'm' :return (dtEnd.getMonth() 1) ((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth() 1);
case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear();
}
}

复制代码 代码如下:

/**
* 日期计算(原型扩展或重载)
* @param {strInterval} 日期类型:'y、m、d、h、n、s、w'
* @param {Number} 数量
* @type Date
* @returns 计算后的日期
*/
Date.prototype.dateAdd = function(strInterval, Number) {
var dtTmp = this;
switch (strInterval) {
case 's' :return new Date(Date.parse(dtTmp) (1000 * Number));
case 'n' :return new Date(Date.parse(dtTmp) (60000 * Number));
case 'h' :return new Date(Date.parse(dtTmp) (3600000 * Number));
case 'd' :return new Date(Date.parse(dtTmp) (86400000 * Number));
case 'w' :return new Date(Date.parse(dtTmp) ((86400000 * 7) * Number));
case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
case 'y' :return new Date((dtTmp.getFullYear() Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
}
}

/*

Description:Date对象扩展。包括常用中文日期格式解析、加减操作、日期差、周操作和季操作。
Author:Dezwen.

/**
* 取得日期数据信息(原型扩展或重载)
* @param {interval} 日期类型:'y、m、d、h、n、s、w'
* @type int
* @returns 指定的日期部分
*/
Date.prototype.datePart = function(interval){
var myDate = this;
var partStr='';
var Week = ['日','一','二','三','四','五','六'];
switch (interval)
{
case 'y' :partStr = myDate.getFullYear();break;
case 'm' :partStr = myDate.getMonth() 1;break;
case 'd' :partStr = myDate.getDate();break;
case 'w' :partStr = Week[myDate.getDay()];break;
case 'ww' :partStr = myDate.WeekNumOfYear();break;
case 'h' :partStr = myDate.getHours();break;
case 'n' :partStr = myDate.getMinutes();break;
case 's' :partStr = myDate.getSeconds();break;
}
return partStr;
}

Date:2009-5-30.

*/
Date.parseCHS = function(dateString) {
///<summary>
///解析常用的中文日期并返回日期对象。
///</summary>
///<param name="dateString" type="string">
///日期字符串。包含的格式有:"xxxx(xx)-xx-xx xx:xx:xx","xxxx(xx).xx.xx xx:xx:xx",
///"xxxx(xx)年xx月xx日 xx时xx分xx秒"
///</param>
var regExp1 = /^d{4}-d{1,2}-d{1,2}( d{1,2}:d{1,2}:d{1,2})?$/;
var regExp2 = /^d{4}.d{1,2}.d{1,2}( d{1,2}:d{1,2}:d{1,2})?$/;
var regExp3 = /^d{4}年d{1,2}月d{1,2}日( d{1,2}时d{1,2}分d{1,2}秒)?$/;
if (regExp1.test(dateString)) { }
else if (regExp2.test(dateString)) {
dateString = dateString.replace(/./g, "-");
}
else if (regExp3.test(dateString)) {
dateString = dateString.replace("年", "-").replace(
"月", "-").replace("日", "").replace("时", ":").replace("分", ":"
).replace("秒", "");
}
else {
throw "传给Date.parseCHS的参数值的格式不正确。请传递一个有效的日期格式字符串作为参数。";
}
var date_time = dateString.split(" ");
var date_part = date_time[0].split("-");
var time_part = (date_time.length > 1 ? date_time[1].split(":") : "");
if (time_part == "") {
return new Date(date_part[0], date_part[1] - 1, date_part[2]);
}
else {
return new Date(date_part[0], date_part[1] - 1, date_part[2], time_part[0], time_part[1], time_part[2]);
}
}
Date.prototype.add = function(datepart, number, returnNewObjec) {
///<summary>
///日期加减。
///若returnNewObjec参数为true值,则操作结果由一个新的日期对象返回,原日期对象不变,
///否则返回的是原日期对象,此时原日期对象的值是操作结果.
///</summary>
///<param name="datepart" type="string">
///日期加减的部分:
///Year, yy, yyyy--年
///quarter, qq, q --季
///Month, mm, m -- 月
///dayofyear, dy, y-- 日
///Day, dd, d -- 日
///Week, wk, ww -- 周
///Hour, hh -- 小时
///minute, mi, n -- 分钟
///second, ss, s -- 秒
///millisecond, ms -- 毫秒
///</param>
///<param name="number" type="int">
///要加减的数量
///</param>
///<param name="returnNewObjec" type="bool">
///是否返回新的日期对象。若参数为true值,则返回一个新的日期对象,否则返回的是当前日期对象.
///</param>
///<returns type="Date">
///返回一个日期对象
///</returns>
var regExp = /^d $/;
if (regExp.test(number)) {
number = parseInt(number);
}
else { number = 0; }
datepart = datepart.toLowerCase();
var tDate;
if (typeof (returnNewObjec) == "boolean") {
if (returnNewObjec == true) {
tDate = new Date(this);
}
else { tDate = this; }
}
else { tDate = this; }

switch (datepart) {
case "year":
case "yy":
case "yyyy":
tDate.setFullYear(this.getFullYear() number);
break;
case "quarter":
case "qq":
case "q":
tDate.setMonth(this.getMonth() (number * 3));
break;
case "month":
case "mm":
case "m":
tDate.setMonth(this.getMonth() number);
break;
case "dayofyear":
case "dy":
case "y":
case "day":
case "dd":
case "d":
tDate.setDate(this.getDate() number);
break;
case "week":
case "wk":
case "ww":
tDate.setDate(this.getDate() (number * 7));
break;
case "hour":
case "hh":
tDate.setHours(this.getHours() number);
break
case "minute":
case "mi":
case "n":
tDate.setMinutes(this.getMinutes() number);
break
case "second":
case "ss":
case "s":
tDate.setSeconds(this.getSeconds() number);
break;
case "millisecond":
case "ms":
tDate.setMilliseconds(this.getMilliseconds() number);
break;
}
return tDate;
}
Date.prototype.dateDiff = function(datepart, beginDate) {
///<summary>
///开始日期与当前日期的差,返回差的绝对值。
///</summary>
///<param name="datepart" type="string">
///日期加减的部分:
///Year, yy, yyyy--年 ;
///quarter, qq, q --季
///Month, mm, m -- 月
///dayofyear, dy, y-- 日
///Day, dd, d -- 日
///Week, wk, ww -- 周
///Hour, hh -- 小时
///minute, mi, n -- 分钟
///second, ss, s -- 秒
///millisecond, ms -- 毫秒
///</param>
///<param name="beginDate" type="DateTime">
///要用于比较我日期
///</param>
///<returns type="int">
///返回日期差的绝对值。
///</returns>
datepart = datepart.toLowerCase();
var yearDiff = Math.abs(this.getFullYear() - beginDate.getFullYear());
switch (datepart) {
case "year":
case "yy":
case "yyyy":
return yearDiff;
case "quarter":
case "qq":
case "q":
var qDiff = 0;
switch (yearDiff) {
case 0:
qDiff = Math.abs(this.getSeason() - beginDate.getSeason());
break;
case 1:
qDiff = (this.getSeason() - new Date(this.getFullYear(), 0, 1).getSeason())
(new Date(beginDate.getFullYear(), 11, 31).getSeason() -
beginDate.getSeason()) 1;
break;
default:
qDiff = (this.getSeason() - new Date(this.getFullYear(), 0, 1).getSeason())
(new Date(beginDate.getFullYear(), 11, 31).getSeason() -
beginDate.getSeason()) 1 (yearDiff - 1) * 4;
break;
}
return qDiff;
case "month":
case "mm":
case "m":
var monthDiff = 0;
switch (yearDiff) {
case 0:
monthDiff = Math.abs(this.getMonth() - beginDate.getMonth());
break;
case 1:
monthDiff = (this.getMonth() - new Date(this.getFullYear(), 0, 1).getMonth())
(new Date(beginDate.getFullYear(), 11, 31).getMonth() -
beginDate.getMonth()) 1;
break;
default:
monthDiff = (this.getMonth() - new Date(this.getFullYear(), 0, 1).getMonth())
(new Date(beginDate.getFullYear(), 11, 31).getMonth() -
beginDate.getMonth()) 1 (yearDiff - 1) * 12;
break;
}
return monthDiff;
case "dayofyear":
case "dy":
case "y":
case "day":
case "dd":
case "d":
return Math.abs((this.setHours(0, 0, 0, 0) - beginDate.setHours(0, 0, 0, 0)) / 1000 / 60 / 60 / 24);
case "week":
case "wk":
case "ww":
var weekDiff = 0;
switch (yearDiff) {
case 0:
weekDiff = Math.abs(this.getWeek() - beginDate.getWeek());
break;
case 1:
weekDiff = (this.getWeek() - new Date(this.getFullYear(), 0, 1).getWeek())
(new Date(beginDate.getFullYear(), 11, 31).getWeek() -
beginDate.getWeek()) 1;
break;
default:

weekDiff = (this.getWeek() - new Date(this.getFullYear(), 0, 1).getWeek())
(new Date(beginDate.getFullYear(), 11, 31).getWeek() -
beginDate.getWeek()) 1;
var thisYear = this.getFullYear();
for (var i = 1; i < yearDiff; i ) {
weekDiff = new Date(thisYear - i, 0, 1).getWeeksOfYear();
}
break;
}
return weekDiff;
case "hour":
case "hh":
return Math.abs((this - beginDate) / 1000 / 60 / 60);
case "minute":
case "mi":
case "n":
return Math.abs((this - beginDate) / 1000 / 60);
case "second":
case "ss":
case "s":
return Math.abs((this - beginDate) / 1000);
case "millisecond":
case "ms":
return Math.abs(this - beginDate);
}
}
Date.prototype.getFirstWeekDays = function() {
///<summary>
///获取当前日期所在年份中第一个星期的天数
///</summary>
return (7 - new Date(this.getFullYear(), 0, 1).getDay()); //JS里的月份也是从0开始的,0表示1月,依此类推。
}
Date.prototype.getLastWeekDays = function(year) {
///<summary>
///获取当前日期所在年份中最后一个星期的天数
///</summary>
return (new Date(this.getFullYear(), 11, 31).getDay() 1); //JS里的月份也是从0开始的,0表示1月,依此类推。
}
Date.prototype.getWeeksOfYear = function() {
///<summary>
///获取当前日期所在年份的周数
///</summary>
return (Math.ceil((new Date(this.getFullYear(), 11, 31, 23, 59, 59) -
new Date(this.getFullYear(), 0, 1)) / 1000 / 60 / 60 / 24) -
this.getFirstWeekDays() - this.getLastWeekDays()) / 7 2;
}
Date.prototype.getSeason = function() {
///<summary>
///获取当前日期所在是一年中的第几季。返回一个季度整数值。
///</summary>
var month = this.getMonth();
switch (month) {
case 0:
case 1:
case 2:
return 1;
case 3:
case 4:
case 5:
return 2;
case 6:
case 7:
case 8:
return 3;
default:
return 4;
}
}
Date.prototype.getWeek = function() {
///<summary>
///获取当前日期所在是一年中的第几周。返回一个整数值。
///</summary>
var firstDate = new Date(this.getFullYear(), 0, 1);
var firstWeekDays = this.getFirstWeekDays();
var secondWeekFirstDate = firstDate.add("dd", firstWeekDays, true);
var lastDate = new Date(this.getFullYear(), 11, 31);
var lastWeekDays = this.getLastWeekDays();
if (this.dateDiff("day", firstDate) < firstWeekDays) {
return 1;
}
else if (this.dateDiff("day", lastDate) < lastWeekDays) {
return this.getWeeksOfYear();
}
else {
return Math.ceil((this - secondWeekFirstDate) / 1000 / 60 / 60 / 24 / 7)

  • 1;
    }
    }

复制代码 代码如下: script type="text/javascript" Date.prototype.Format = functio...

/**
* 把日期分割成数组(原型扩展或重载)
* @type array
* @returns 日期数组
*/
Date.prototype.toArray = function() {
var myDate = this;
var myArray = Array();
myArray[0] = myDate.getFullYear();
myArray[1] = myDate.getMonth() 1;
myArray[2] = myDate.getDate();
myArray[3] = myDate.getHours();
myArray[4] = myDate.getMinutes();
myArray[5] = myDate.getSeconds();
return myArray;
}

/**
* 取得当前月份的天数(原型扩展或重载)
* @type int
* @returns 天数
*/
Date.prototype.daysOfMonth = function(){
var myDate = this;
var ary = myDate.toArray();
var date1 = (new Date(ary[0],ary[1] 1,1));
var date2 = date1.dateAdd('m',1);
var result = daysDiff(date1.format('yyyy-MM-dd'),date2.format('yyyy-MM-dd'));
return result;
}

/**
* 判断闰年(原型扩展或重载)
* @type boolean
* @returns 是否为闰年 true/false
*/
Date.prototype.isLeapYear = function() {
return (0==this.getYear()%4&&((this.getYear()0!=0)||(this.getYear()@0==0)));
}

/**
* 比较两个日期的天数差(自定义)
* @param {DateOne} 日期一
* @param {DateOne} 日期二
* @type int
* @returns 比较结果
*/
function daysDiff(DateOne,DateTwo)
{
var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));
var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-') 1);
var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));

var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));
var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-') 1);
var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));

var cha=((Date.parse(OneMonth '/' OneDay '/' OneYear)- Date.parse(TwoMonth '/' TwoDay '/' TwoYear))/86400000);
return Math.abs(cha);
}

/**
* 日期计算(自定义)
* @param {strInterval} 日期类型:'y、m、d、h、n、s、w'
* @param {Number} 数量
* @param {prmDate} 原日期
* @type Date
* @returns 计算后的日期
*/
function dateAdd(interval,number,prmDate){
number = parseInt(number);
if (typeof(prmDate)=="string"){
prmDate = prmDate.split(/D/);
--prmDate[1];
eval("var prmDate = new Date(" prmDate.join(",") ")");
}
if (typeof(prmDate)=="object"){
var prmDate = prmDate
}
switch(interval){
case "y": prmDate.setFullYear(prmDate.getFullYear() number); break;
case "m": prmDate.setMonth(prmDate.getMonth() number); break;
case "d": prmDate.setDate(prmDate.getDate() number); break;
case "w": prmDate.setDate(prmDate.getDate() 7*number); break;
case "h": prmDate.setHours(prmDate.getHour() number); break;
case "n": prmDate.setMinutes(prmDate.getMinutes() number); break;
case "s": prmDate.setSeconds(prmDate.getSeconds() number); break;
case "l": prmDate.setMilliseconds(prmDate.getMilliseconds() number); break;
}
return prmDate;
}

/**
* 获取字符串长度(原型扩展或重载)
* @type int
* @returns 字符串长度
*/
String.prototype.len = function() {
var arr=this.match(/[^x00-xff]/ig);
return this.length (arr==null?0:arr.length);
}

/**
* 字符串左取指定个数的字符(原型扩展或重载)
* @param {num} 获取个数
* @type string
* @returns 匹配的字符串
*/
String.prototype.left = function(num,mode) {
if(!/d /.test(num)) return(this);
var str = this.substr(0,num);
if(!mode) return str;
var n = str.len() - str.length;
num = num - parseInt(n/2);
return this.substr(0,num);
}

/**
* 字符串右取指定个数的字符(原型扩展或重载)
* @param {num} 获取个数
* @type string
* @returns 匹配的字符串
*/
String.prototype.right = function(num,mode) {
if(!/d /.test(num)) return(this);
var str = this.substr(this.length-num);
if(!mode) return str;
var n = str.len() - str.length;
num = num - parseInt(n/2);
return this.substr(this.length-num);
}

/**
* 字符串包含(原型扩展或重载)
* @param {string: str} 要搜索的子字符串
* @param {bool: mode} 是否忽略大小写
* @type int
* @returns 匹配的个数
*/
String.prototype.matchCount = function(str,mode) {
return eval("this.match(/(" str ")/g" (mode?"i":"") ").length");
}

/**
* 去除左右空格(原型扩展或重载)
* @type string
* @returns 处理后的字符串
*/
String.prototype.trim = function() {
return this.replace(/(^s*)|(s*$)/g,"");
}

/**
* 去除左空格(原型扩展或重载)
* @type string
* @returns 处理后的字符串
*/
String.prototype.lTrim = function() {
return this.replace(/(^s*)/g, "");
}

/**
* 去除右空格(原型扩展或重载)
* @type string
* @returns 处理后的字符串
*/
String.prototype.rTrim = function() {
return this.replace(/(s*$)/g, "");
}

/**
* 字符串转换为日期型(原型扩展或重载)
* @type Date
* @returns 日期
*/
String.prototype.toDate = function() {
var converted = Date.parse(this);
var myDate = new Date(converted);
if (isNaN(myDate)) {var arys= this.split('-'); myDate = new Date(arys[0],--arys[1],arys[2]); }
return myDate;
}

代码如下: /** 2 * 检索数组元素(原型扩展或重载) 3 * @param {o} 被检索的元素值 4 * @type int 5 * @returns 元素索引 6 */ 7 Array.prototype...

本文由pc28.am发布于pc28.am,转载请注明出处:依附prototype扩大的JavaScript常用函数库,日期对象

上一篇:措施解决办法,字面量和相应品种 下一篇:没有了
猜你喜欢
热门排行
精彩图文