Repository: XuXiaoGH/dateformat.js Branch: master Commit: 6afb0acd26f3 Files: 7 Total size: 29.4 KB Directory structure: gitextract_ru0o_no5/ ├── README.md ├── dateformat-es6.js ├── dateformat-min.js ├── dateformat-npm.js ├── dateformat.js ├── index.html └── package.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: README.md ================================================ # dateformat.js > **dateformat.js** 是一个非常简洁、轻量级、不到 `5kb` 的很简洁的 Javascript 库, 它是一个时间的处理工具类。 - 支持常用的时间格式化 - 得到当前星期,时间对比大小,是否为闰年 - 增加日期,增加月份,增加年份等等 - 支持自动实时更新; - 支持浏览器script方式; - 测试用例完善,执行良好; # 使用方法 **1. 引入 dateformat.js** 通过 `script` 标签引入到html文件中,会生成一个全局变量 `DateFormat`. ```js ``` 当然你还可以在通过 import 引入 ``` import dateformat form '...自己的路径'; ``` 最后该项目也上传到npm上,你可以通过 ``` //安装 npm install dateformat-util ``` ``` //使用 var dateformat = require('dateformat-util'); dateformat.format(new Date()); ``` **3. 使用 `dateformat` 类** 直接调用方法即可 ```js DateFormat.format(new Date(), 'yyyy-MM-dd hh:mm:ss'); ``` # 具体方法 **1. format(date, fmt)** `format` 是将 Date类型的时间进行格式化的工具方法: ```js DateFormat.format(new Date()) //不传 fmt,则默认为 yyyy-MM-dd hh:mm:ss ; DateFormat.format(new Date(), 'yyyy-MM-dd hh:mm:ss'); DateFormat.format(new Date(), 'yyyy/MM/dd hh:mm:ss'); DateFormat.format(new Date(), 'yyyy/MM/dd'); ... ``` **2. formatToDate(dateStr)** `formatToDate` 是将 字符串类型的时间 转化成 Date 类型的工具方法: ``` DateFormat.formatToDate('2017-04-18 12:12:12'); DateFormat.formatToDate('2017/04/18 12:12:12'); ... ``` **3. getDateStart(date)** `getDateStart` 是得到一天的开始,工作中会碰到这种需要得到某一天的开始或结束的时间点。 ```js DateFormat.getDateStart(new Date()); //今天是4.18, 那返回的是今天 00:00:00的Date类型 ``` 如果想返回字符串类型,可以使用 `getDateStartStr(date, fmt)` 方法,fmt非必传 ```js DateFormat.getDateStartStr(new Date(), 'yyyy-MM-dd hh:mm:ss'); //返回 2017-04-18 00:00:00 ``` **4. getDateEnd(date)** `getDateEnd` 是得到一天的结束 ```js DateFormat.getDateEnd(new Date()); //今天是4.18, 那返回的是今天 23:59:59的Date类型 ``` 如果想返回字符串类型,可以使用 `getDateEndStr(date, fmt)` 方法,fmt非必传 ```js DateFormat.getDateEndStr(new Date(), 'yyyy-MM-dd hh:mm:ss'); //返回 2017-04-18 23:59:59 ``` **5. compareDate(d1, d2)** `compareDate` 比较两个日期的大小 返回 1 , 则 d1 > d2 返回 0 , 则 d1 == d2 返回 -1, 则 d1 < d2 ```js DateFormat.compareDate(new Date(), new Date()); ``` **6. getWeek(date, type)** `getWeek` 得到一个日期是星期几 ```js DateFormat.getWeek(new Date()); //type非必传,默认返回 '星期 X'的格式 DateFormat.getWeek(new Date(), DateFormat.WEEKTYPE.US_DAYNAME); // Monday /* type 枚举如下: DateFormat.WEEKTYPE.ZH_DAYNAME : 星期一 DateFormat.WEEKTYPE.ZH_SHORTDAYNAME: 周一 DateFormat.WEEKTYPE.US_DAYNAME: Monday DateFormat.WEEKTYPE.US_SDAYNAME: Mon */ ``` **7. addDay(date, num)** 增加系列: ``` addDay(date, num) addDayStr(dateStr, num) addMonth(date, num) addMonthStr(dateStr, num) addYear(date, num) addYearStr(dateStr, num) ``` 使用起来很简单,今天是 2017.04.18 ``` DateFormat.addDay(new Date(), 3); //返回是三天后的 Date类型 DateFormat.addDayStr('2017-04-18 12:12:12', 3) // 返回 Fri Apr 21 2017 12:12:12 GMT+0800 (中国标准时间) // 其他 month year的方式同上 ``` ================================================ FILE: dateformat-es6.js ================================================ /** * Created by admin on 2017/4/18. */ export default function dateformat() { }; /** * 格式化时间 * @param date * @param fmt * @returns {*} */ dateformat.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; }; dateformat.formatToDate = function (dateStr) { if (this.isNotEmpty(dateStr)) { return new Date(Date.parse(dateStr.replace(/-/g, '/'))); } return ''; }; dateformat.getDateStart = function (date) { var fmt = 'yyyy-MM-dd'; var dateStartStr = this.getDateStartStr(date, fmt); var startTime = new Date(Date.parse(dateStartStr)); return startTime; }; dateformat.getDateStartStr = function (date, fmt) { if (typeof fmt == 'undefined') { fmt = 'yyyy-MM-dd'; } var dateStr = this.format(date, fmt); dateStr += ' 00:00:00'; return dateStr; }; dateformat.getDateEnd = function (date) { var fmt = 'yyyy-MM-dd'; var dateEndStr = this.getDateEndStr(date, fmt); var endTime = new Date(Date.parse(dateEndStr)); return endTime; }; dateformat.getDateEndStr = function (date, fmt) { if (typeof fmt == 'undefined') { fmt = 'yyyy-MM-dd'; } var endStr = this.format(date, fmt); endStr += ' 23:59:59'; return endStr; }; dateformat.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; } } }; dateformat.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; }; dateformat.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); } }; dateformat.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; }; dateformat.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; }; dateformat.addMonth = function (date, monthNum) { if (this.isNotEmpty(date) && this.isNotEmpty(monthNum) && date instanceof Date && typeof monthNum == 'number') { date.setDate(1); // 兼容 31号的特殊情况 date.setMonth(date.getMonth() + monthNum); } else { console.warn('date or monthNum format wrong'); } return date; }; dateformat.addMonthStr = function (dateStr, monthNum) { var date = ''; if (this.isNotEmpty(dateStr) && this.isNotEmpty(monthNum) && typeof monthNum == 'number') { date = this.formatToDate(dateStr); date.setDate(1); // 兼容 31号的特殊情况 date.setMonth(date.getMonth() + monthNum); } else { console.warn('date or monthNum format wrong'); } return date; }; dateformat.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; }; dateformat.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; }; dateformat.isNotEmpty = function (str) { if (str != '' && str != null && typeof str != 'undefined') { return true; } console.warn('argument format is wrong'); return false; }; dateformat.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 = this._options.ZH.dayNames[index]; break; case this.WEEKTYPE.ZH_SDAYNAME: dateStr = this._options.ZH.shortDayNames[index]; break; case this.WEEKTYPE.US_DAYNAME: dateStr = this._options.US.dayNames[index]; break; case this.WEEKTYPE.US_SDAYNAME: dateStr = this._options.US.shortDayNames[index]; break; } return dateStr; } }; dateformat.WEEKTYPE = { ZH_DAYNAME: 0, ZH_SDAYNAME: 1, US_DAYNAME: 2, US_SDAYNAME: 3, }; dateformat._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'] } }; ================================================ FILE: dateformat-min.js ================================================ (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"]}};var _date_format_api={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""},getDateStart:function(date){var fmt="yyyy-MM-dd";var dateStartStr=this.getDateStartStr(date,fmt);var startTime=new Date(Date.parse(dateStartStr));return startTime},getDateStartStr:function(date,fmt){if(typeof fmt=="undefined"){fmt="yyyy-MM-dd"}var dateStr=this.format(date,fmt);dateStr+=" 00:00:00";return dateStr},getDateEnd:function(date){var fmt="yyyy-MM-dd";var dateEndStr=this.getDateEndStr(date,fmt);var endTime=new Date(Date.parse(dateEndStr));return endTime},getDateEndStr:function(date,fmt){if(typeof fmt=="undefined"){fmt="yyyy-MM-dd"}var endStr=this.format(date,fmt);endStr+=" 23:59:59";return endStr},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; } else if (d1.getTime() == d2.getTime()) { return 0; } else if (d1.getTime() < d2.getTime()) { return -1; } } }; /** * 是否为闰年 * @param date * @returns {boolean} */ exports.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} */ exports.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); } }; /** * 增加天数 Date * @param date * @param dayNum * @returns {*} */ exports.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; }; /** * d增加天数 字符串 * @param dateStr * @param dayNum * @returns {string} */ exports.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; }; /** * 增加月份 Date * @param date * @param monthNum * @returns {*} */ exports.addMonth = function (date, monthNum) { if (this.isNotEmpty(date) && this.isNotEmpty(monthNum) && date instanceof Date && typeof monthNum == 'number') { date.setDate(1); // 兼容 31号的特殊情况 date.setMonth(date.getMonth() + monthNum); } else { console.warn('date or monthNum format wrong'); } return date; }; /** * 增加月份 字符串 * @param dateStr * @param monthNum * @returns {string} */ exports.addMonthStr = function (dateStr, monthNum) { var date = ''; if (this.isNotEmpty(dateStr) && this.isNotEmpty(monthNum) && typeof monthNum == 'number') { date = this.formatToDate(dateStr); date.setDate(1); // 兼容 31号的特殊情况 date.setMonth(date.getMonth() + monthNum); } else { console.warn('date or monthNum format wrong'); } return date; }; /** * 增加年份 Date * @param date * @param yearNum * @returns {*} */ exports.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; }; /** * 增加年份 字符串 * @param dateStr * @param yearNum * @returns {string} */ exports.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} */ exports.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, }; _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'] } }; /** * 得到今天是星期几 * @param date * @param type * @returns {string} */ exports.getWeek = function (date, type) { if (date) { if (!this.isNotEmpty(type)) { type = 0; } var index = date.getDay(); var dateStr = ''; switch (type) { case WEEKTYPE.ZH_DAYNAME: dateStr = _options.ZH.dayNames[index]; break; case WEEKTYPE.ZH_SDAYNAME: dateStr = _options.ZH.shortDayNames[index]; break; case WEEKTYPE.US_DAYNAME: dateStr = _options.US.dayNames[index]; break; case WEEKTYPE.US_SDAYNAME: dateStr = _options.US.shortDayNames[index]; break; } return dateStr; } }; ================================================ FILE: dateformat.js ================================================ /** * 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.setDate(1); // 兼容 31号的特殊情况 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.setDate(1); // 兼容 31号的特殊情况 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; })(); ================================================ FILE: index.html ================================================ 时间,日期转换 ================================================ FILE: package.json ================================================ { "name": "dateformat-util", "version": "1.0.5", "description": "A super-lightweight time conversion tool class", "main": "dateformat-npm.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "git+https://github.com/XuXiaoGH/dateformat.js.git" }, "keywords": [ "date", "format" ], "author": "heixuxiao@163.com", "license": "ISC", "bugs": { "url": "https://github.com/XuXiaoGH/dateformat.js/issues" }, "homepage": "https://github.com/XuXiaoGH/dateformat.js#readme" }