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
<script src="dateformat.js"></script>
```
当然你还可以在通过 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}}}}},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}},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},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)}},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},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},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},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: dateformat-npm.js
================================================
/**
* Created by admin on 2017/4/19.
*/
/**
* Created by admin on 2017/4/18.
*/
/**
* 格式化时间
* @param date
* @param fmt
* @returns {*}
*/
exports.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;
};
/**
* 将字符串时间转Date
* @param dateStr
* @returns {*}
*/
exports.formatToDate = function (dateStr) {
if (this.isNotEmpty(dateStr)) {
return new Date(Date.parse(dateStr.replace(/-/g, '/')));
}
return '';
};
/**
* 得到一天的开始,Date
* @param date
* @returns {Date}
*/
exports.getDateStart = function (date) {
var fmt = 'yyyy-MM-dd';
var dateStartStr = this.getDateStartStr(date, fmt);
var startTime = new Date(Date.parse(dateStartStr));
return startTime;
};
/**
*得到一天的开始,字符串
* @param date
* @param fmt
* @returns {*}
*/
exports.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
* @returns {Date}
*/
exports.getDateEnd = function (date) {
var fmt = 'yyyy-MM-dd';
var dateEndStr = this.getDateEndStr(date, fmt);
var endTime = new Date(Date.parse(dateEndStr));
return endTime;
};
/**
* 得到一天的结束 字符串
* @param date
* @param fmt
* @returns {*}
*/
exports.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
* @returns {number}
*/
exports.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
* @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
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>时间,日期转换</title>
<script src="dateformat.js"></script>
<script>
//alert(DateFormat.format(new Date() , 'yyyyMMdd'));
//alert(DateFormat.getDateStart(new Date()) , 'yyyyMMdd');
//alert(DateFormat.getDateEndStr(new Date(), 'yyyy/MM/dd'));
//alert(DateFormat.getWeek(new Date(),DateFormat.WEEKTYPE.US_DAYNAME));
//console.log(DateFormat.addDay(new Date(), '3'));
//console.log(DateFormat.format(new Date()));
//console.log(DateFormat.formatToDate('2017/04/14 14:31:07'));
//console.log(DateFormat.isValidDate('2017-04-14 14:31:07'));
//console.log(DateFormat.format(new Date()));
//console.log(DateFormat.addDayStr('2017-04-18 12:12:12' , 3));
</script>
</head>
<body>
</body>
</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"
}
gitextract_ru0o_no5/ ├── README.md ├── dateformat-es6.js ├── dateformat-min.js ├── dateformat-npm.js ├── dateformat.js ├── index.html └── package.json
SYMBOL INDEX (1 symbols across 1 files)
FILE: dateformat-es6.js
function dateformat (line 5) | function dateformat() {
Condensed preview — 7 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (34K chars).
[
{
"path": "README.md",
"chars": 2670,
"preview": "# dateformat.js\n\n> **dateformat.js** 是一个非常简洁、轻量级、不到 `5kb` 的很简洁的 Javascript 库,\n它是一个时间的处理工具类。\n\n - 支持常用的时间格式化\n - 得到当前星期,时间对"
},
{
"path": "dateformat-es6.js",
"chars": 6345,
"preview": "/**\n * Created by admin on 2017/4/18.\n */\n\nexport default function dateformat() {\n};\n\n\n/**\n * 格式化时间\n * @param date\n * @p"
},
{
"path": "dateformat-min.js",
"chars": 4738,
"preview": "(function(){var _options={ZH:{dayNames:[\"星期日\",\"星期一\",\"星期二\",\"星期三\",\"星期四\",\"星期五\",\"星期六\"],shortDayNames:[\"周日\",\"周一\",\"周二\",\"周三\",\"周"
},
{
"path": "dateformat-npm.js",
"chars": 7285,
"preview": "/**\n * Created by admin on 2017/4/19.\n */\n/**\n * Created by admin on 2017/4/18.\n */\n\n\n/**\n * 格式化时间\n * @param date\n * @pa"
},
{
"path": "dateformat.js",
"chars": 7672,
"preview": "/**\n * autor: xuxiao , zubaoshan\n */\n(function () {\n //定义一些默认参数\n var _options = {\n ZH: {\n dayNames: ['星期日', '星"
},
{
"path": "index.html",
"chars": 852,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <title>时间,日期转换</title>\n <script src=\"dateforma"
},
{
"path": "package.json",
"chars": 579,
"preview": "{\n \"name\": \"dateformat-util\",\n \"version\": \"1.0.5\",\n \"description\": \"A super-lightweight time conversion tool class\",\n"
}
]
About this extraction
This page contains the full source code of the XuXiaoGH/dateformat.js GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 7 files (29.4 KB), approximately 9.8k tokens, and a symbol index with 1 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.