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"
}