| /** | 
|  * autor: xuxiao , zubaoshan | 
|  */ | 
| (function () { | 
|     //定义一些默认参数 | 
|     var _options = { | 
|         ZH: { | 
|             dayNames: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], | 
|             shortDayNames: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], | 
|             monthNames: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], | 
|             shortMonthNames: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'] | 
|         }, | 
|         US: { | 
|             dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], | 
|             shortDayNames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], | 
|             monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], | 
|             shortMonthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] | 
|         } | 
|     } | 
|   | 
|     //定义一些api | 
|     var _date_format_api = { | 
|   | 
|         /** | 
|          * 格式化时间 | 
|          * @param date | 
|          * @param fmt | 
|          * @returns {*} | 
|          */ | 
|         format: function (date, fmt) { | 
|             var o = { | 
|                 'M+': date.getMonth() + 1, //月份 | 
|                 'd+': date.getDate(), //日 | 
|                 'h+': date.getHours(), //小时 | 
|                 'm+': date.getMinutes(), //分 | 
|                 's+': date.getSeconds(), //秒 | 
|                 'q+': Math.floor((date.getMonth() + 3) / 3), //季度 | 
|                 'S': date.getMilliseconds() //毫秒 | 
|             }; | 
|             if(!this.isNotEmpty(fmt)){ | 
|                 fmt = 'yyyy-MM-dd hh:mm:ss'; | 
|             } | 
|             if (/(y+)/.test(fmt)) { | 
|                 fmt = fmt.replace(RegExp.$1, (date.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' + o[k]).substr(('' + o[k]).length))); | 
|                 } | 
|             } | 
|             return fmt; | 
|         }, | 
|   | 
|         formatToDate: function (dateStr) { | 
|             if(this.isNotEmpty(dateStr) ){ | 
|                 return new Date(Date.parse(dateStr.replace(/-/g,   "/"))); | 
|             } | 
|             return ''; | 
|         }, | 
|   | 
|         /** | 
|          * 得到一天的开始 date类型 | 
|          * @param date | 
|          */ | 
|         getDateStart: function (date) { | 
|             var fmt = 'yyyy-MM-dd'; | 
|             var dateStartStr = this.getDateStartStr(date, fmt); | 
|             var startTime = new Date(Date.parse(dateStartStr)); | 
|             return startTime; | 
|         }, | 
|   | 
|         /** | 
|          * 得到一天的开始 str 类型 | 
|          * @param date | 
|          */ | 
|         getDateStartStr: function (date, fmt) { | 
|             if (typeof fmt == 'undefined') { | 
|                 fmt = 'yyyy-MM-dd'; | 
|             } | 
|             var dateStr = this.format(date, fmt); | 
|             dateStr += ' 00:00:00'; | 
|             return dateStr; | 
|         }, | 
|   | 
|         /** | 
|          * 得到一天的结束 date类型 | 
|          * @param date | 
|          */ | 
|         getDateEnd: function (date) { | 
|             var fmt = 'yyyy-MM-dd'; | 
|             var dateEndStr = this.getDateEndStr(date, fmt); | 
|             var endTime = new Date(Date.parse(dateEndStr)); | 
|             return endTime; | 
|         }, | 
|   | 
|         /** | 
|          * 得到一天的结束 str 类型 | 
|          * @param date | 
|          */ | 
|         getDateEndStr: function (date, fmt) { | 
|             if (typeof fmt == 'undefined') { | 
|                 fmt = 'yyyy-MM-dd'; | 
|             } | 
|             var endStr = this.format(date, fmt); | 
|             endStr += ' 23:59:59'; | 
|             return endStr; | 
|         }, | 
|   | 
|         /** | 
|          * 两个时间比较大小 | 
|          * @param d1 | 
|          * @param d2 | 
|          */ | 
|         compareDate: function (d1, d2) { | 
|             if (d1 && d2) { | 
|                 if (d1.getTime() > d2.getTime()) { | 
|                     return 1; | 
|                 } else if (d1.getTime() == d2.getTime()) { | 
|                     return 0; | 
|                 } else if (d1.getTime() < d2.getTime()) { | 
|                     return -1; | 
|                 } | 
|             } | 
|         }, | 
|   | 
|         /** | 
|          * 得到星期几, 支持中英 | 
|          * @param date | 
|          * @param type | 
|          * @returns {string} | 
|          */ | 
|         getWeek: function (date, type) { | 
|             if (date) { | 
|                 if (!this.isNotEmpty(type)) { | 
|                     type = 0; | 
|                 } | 
|                 var index = date.getDay(); | 
|                 var dateStr = ''; | 
|                 switch (type) { | 
|                     case this.WEEKTYPE.ZH_DAYNAME: | 
|                         dateStr = _options.ZH.dayNames[index]; | 
|                         break; | 
|                     case this.WEEKTYPE.ZH_SDAYNAME: | 
|                         dateStr = _options.ZH.shortDayNames[index]; | 
|                         break; | 
|                     case this.WEEKTYPE.US_DAYNAME: | 
|                         dateStr = _options.US.dayNames[index]; | 
|                         break; | 
|                     case this.WEEKTYPE.US_SDAYNAME: | 
|                         dateStr = _options.US.shortDayNames[index]; | 
|                         break; | 
|                 } | 
|                 return dateStr; | 
|             } | 
|         }, | 
|   | 
|         /** | 
|          * 是否为闰年 | 
|          * @param date | 
|          * @returns {boolean} | 
|          */ | 
|         isLeapYear: function (date) { | 
|             if (date instanceof Date) { | 
|                 return (0 == date.getYear() % 4 && (( date.getYear() % 100 != 0) || (date.getYear() % 400 == 0))); | 
|             } | 
|             console.warn('argument format is wrong'); | 
|             return false; | 
|         }, | 
|   | 
|         /** | 
|          * 字符串是否为正确的时间格式,支持 - / | 
|          * @param dateStr | 
|          * @returns {boolean} | 
|          */ | 
|         isValidDate: function (dateStr) { | 
|             if (this.isNotEmpty(dateStr)) { | 
|                 var r= dateStr.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); | 
|                 if(r==null){ | 
|                     return false; | 
|                 } | 
|                 var d=new Date(r[1],r[3]-1,r[4]); | 
|                 var num = (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]); | 
|                 return (num!=0); | 
|             } | 
|         }, | 
|   | 
|         /** | 
|          * 增加天数 | 
|          * @param date | 
|          * @param dayNum | 
|          */ | 
|         addDay: function (date, dayNum) { | 
|             if(this.isNotEmpty(date) && this.isNotEmpty(dayNum) && date instanceof Date && typeof dayNum == 'number'){ | 
|                 date.setDate(date.getDate() + dayNum); | 
|             }else{ | 
|                 console.warn('date or dayNum format wrong'); | 
|             } | 
|             return date; | 
|         }, | 
|   | 
|   | 
|   | 
|   | 
|   | 
|   | 
|   | 
|   | 
|         addDayStr: function (dateStr, dayNum) { | 
|             var date =''; | 
|             if(this.isNotEmpty(dateStr) && this.isNotEmpty(dayNum) && typeof dayNum == 'number'){ | 
|                 date = this.formatToDate(dateStr); | 
|                 date.setDate(date.getDate() + dayNum); | 
|             }else{ | 
|                 console.warn('dateStr or dayNum format wrong'); | 
|             } | 
|             return date; | 
|         }, | 
|   | 
|         /** | 
|          * 增加月份 | 
|          * @param date | 
|          * @param dayNum | 
|          */ | 
|         addMonth: function (date, monthNum) { | 
|             if(this.isNotEmpty(date) && this.isNotEmpty(monthNum) && date instanceof Date && typeof monthNum == 'number'){ | 
|                 date.setMonth(date.getMonth() + monthNum); | 
|             }else{ | 
|                 console.warn('date or monthNum format wrong'); | 
|             } | 
|             return date; | 
|         }, | 
|   | 
|         addMonthStr: function (dateStr, monthNum) { | 
|             var date =''; | 
|             if(this.isNotEmpty(dateStr) && this.isNotEmpty(monthNum) && typeof monthNum == 'number'){ | 
|                 date = this.formatToDate(dateStr); | 
|                 date.setMonth(date.getMonth() + monthNum); | 
|             }else{ | 
|                 console.warn('date or monthNum format wrong'); | 
|             } | 
|             return date; | 
|         }, | 
|   | 
|         /** | 
|          * 增加年份 | 
|          * @param date | 
|          * @param dayNum | 
|          */ | 
|         addYear: function (date, yearNum) { | 
|             if(this.isNotEmpty(date) && this.isNotEmpty(yearNum) && date instanceof Date && typeof yearNum == 'number'){ | 
|                 date.setYear(date.getFullYear() + yearNum); | 
|             }else{ | 
|                 console.warn('date or yearNum format wrong'); | 
|             } | 
|             return date; | 
|         }, | 
|   | 
|         addYearStr: function (dateStr, yearNum) { | 
|             var date = ''; | 
|             if(this.isNotEmpty(dateStr) && this.isNotEmpty(yearNum) && typeof yearNum == 'number'){ | 
|                 date = this.formatToDate(dateStr); | 
|                 date.setYear(date.getFullYear() + yearNum); | 
|             }else{ | 
|                 console.warn('date or yearNum format wrong'); | 
|             } | 
|             return date; | 
|         }, | 
|   | 
|   | 
|   | 
|   | 
|         /** | 
|          * 是否为空 | 
|          * @param str | 
|          * @returns {boolean} | 
|          */ | 
|         isNotEmpty: function (str) { | 
|             if (str != '' && str != null && typeof str != 'undefined') { | 
|                 return true; | 
|             } | 
|             console.warn('argument format is wrong'); | 
|             return false; | 
|         }, | 
|   | 
|         //定义内部常量 | 
|         WEEKTYPE: { | 
|             ZH_DAYNAME: 0, | 
|             ZH_SDAYNAME: 1, | 
|             US_DAYNAME: 2, | 
|             US_SDAYNAME: 3, | 
|         } | 
|   | 
|   | 
|     } | 
|     //这里确定了插件的名称 | 
|     this.DateFormat = _date_format_api; | 
| })(); |