一、日期工具类

/**
* 日期时间工具类
* @type {{dateFormat}}
*/
var DateTime = function () {
var patterns = {
PATTERN_ERA: 'G', // Era 标志符 Era strings. For example: "AD" and "BC"
PATTERN_YEAR: 'y', // 年
PATTERN_MONTH: 'M', // 月份
PATTERN_DAY_OF_MONTH: 'd', // 月份的天数
PATTERN_HOUR_OF_DAY1: 'k', // 一天中的小时数(1-24)
PATTERN_HOUR_OF_DAY0: 'H', // 24 小时制,一天中的小时数(0-23)
PATTERN_MINUTE: 'm', // 小时中的分钟数
PATTERN_SECOND: 's', // 秒
PATTERN_MILLISECOND: 'S', // 毫秒
PATTERN_DAY_OF_WEEK: 'E', // 一周中对应的星期,如星期一,周一
PATTERN_DAY_OF_YEAR: 'D', // 一年中的第几天
PATTERN_DAY_OF_WEEK_IN_MONTH: 'F', // 一月中的第几个星期(会把这个月总共过的天数除以7,不够准确,推荐用W)
PATTERN_WEEK_OF_YEAR: 'w', // 一年中的第几个星期
PATTERN_WEEK_OF_MONTH: 'W', // 一月中的第几星期(会根据实际情况来算)
PATTERN_AM_PM: 'a', // 上下午标识
PATTERN_HOUR1: 'h', // 12 小时制 ,am/pm 中的小时数(1-12)
PATTERN_HOUR0: 'K', // 和 h 类型
PATTERN_ZONE_NAME: 'z', // 时区名
PATTERN_ZONE_VALUE: 'Z', // 时区值
PATTERN_WEEK_YEAR: 'Y', // 和 y 类型
PATTERN_ISO_DAY_OF_WEEK: 'u',
PATTERN_ISO_ZONE: 'X'
}; var week = {
'ch': {
"0": "\u65e5",
"1": "\u4e00",
"2": "\u4e8c",
"3": "\u4e09",
"4": "\u56db",
"5": "\u4e94",
"6": "\u516d"
},
'en': {
"0": "Sunday",
"1": "Monday",
"2": "Tuesday",
"3": "Wednesday",
"4": "Thursday",
"5": "Friday",
"6": "Saturday"
}
}; /**
* 获取当前时间
* @returns {string}
*/
var handlerGetCurrentTime = function () {
var today = new Date();
var year = today.getFullYear();
var month = today.getMonth() + 1;
var day = today.getDate();
var hours = today.getHours();
var minutes = today.getMinutes();
var seconds = today.getSeconds();
var timeString = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
return timeString;
}; /**
* 比较时间大小
* time1 > time2 return 1
* time1 < time2 return -1
* time1 == time2 return 0
* @param time1
* @param time2
* @returns {number}
*/
var handlerCompareTime = function (time1, time2) {
if (Date.parse(time1.replace(/-/g, "/")) > Date.parse(time2.replace(/-/g, "/"))) {
return 1;
} else if (Date.parse(time1.replace(/-/g, "/")) < Date.parse(time2.replace(/-/g, "/"))) {
return -1;
} else if (Date.parse(time1.replace(/-/g, "/")) == Date.parse(time2.replace(/-/g, "/"))) {
return 0;
}
}; /**
* 是否闰年
* @param year
* @returns {boolean}
*/
var handlerIsLeapYear = function (year) {
return ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0);
}; /**
* 获取某个月的天数,从 0 开始
* @param year
* @param month
* @returns {*}
*/
var handlerGetDaysOfMonth = function (year, month) {
return [31, (this.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
}; /**
* 获取某个月的天数,从 0 开始
* @param year
* @param month
* @returns {number}
*/
var handlerGetDaysOfMonth2 = function (year, month) {
// 将天置为 0,会获取其上个月的最后一天
month = parseInt(month) + 1;
var date = new Date(year, month, 0);
return date.getDate();
}; /**
* 距离现在几天的日期:负数表示今天之前的日期,0 表示今天,整数表示未来的日期
* 如 -1 表示昨天的日期,0 表示今天,2 表示后天
* @param days
* @returns {string}
*/
var handlerFromToday = function (days) {
var today = new Date();
today.setDate(today.getDate() + days);
var date = today.getFullYear() + "-" + (today.getMonth() + 1) + "-" + today.getDate();
return date;
}; /**
* 格式化日期时间
* @param dateTime 需要格式化的日期时间
* @param pattern 格式化的模式,如 yyyy-MM-dd hh(HH):mm:ss.S a k K E D F w W z Z
* @returns {*}
*/
var handlerFormat = function (dateTime, pattern) {
var date = new Date(dateTime);
if (pattern == null || pattern.length == 0) {
return date.toLocaleString();
}
return pattern.replace(/([a-z])\1*/ig, function (matchStr, group1) {
var replacement = "";
switch (group1) {
case patterns.PATTERN_ERA: //G
break;
case patterns.PATTERN_WEEK_YEAR: //Y
case patterns.PATTERN_YEAR: //y
replacement = date.getFullYear();
break;
case patterns.PATTERN_MONTH: //M
var month = date.getMonth() + 1;
replacement = (month < 10 && matchStr.length >= 2) ? "0" + month : month;
break;
case patterns.PATTERN_DAY_OF_MONTH: //d
var days = date.getDate();
replacement = (days < 10 && matchStr.length >= 2) ? "0" + days : days;
break;
case patterns.PATTERN_HOUR_OF_DAY1: //k(1~24)
var hours24 = date.getHours();
replacement = hours24;
break;
case patterns.PATTERN_HOUR_OF_DAY0: //H(0~23)
var hours24 = date.getHours();
replacement = (hours24 < 10 && matchStr.length >= 2) ? "0" + hours24 : hours24;
break;
case patterns.PATTERN_MINUTE: //m
var minutes = date.getMinutes();
replacement = (minutes < 10 && matchStr.length >= 2) ? "0" + minutes : minutes;
break;
case patterns.PATTERN_SECOND: //s
var seconds = date.getSeconds();
replacement = (seconds < 10 && matchStr.length >= 2) ? "0" + seconds : seconds;
break;
case patterns.PATTERN_MILLISECOND: //S
var milliSeconds = date.getMilliseconds();
replacement = milliSeconds;
break;
case patterns.PATTERN_DAY_OF_WEEK: //E
var day = date.getDay();
replacement = week['ch'][day];
break;
case patterns.PATTERN_DAY_OF_YEAR: //D
replacement = dayOfTheYear(date);
break;
case patterns.PATTERN_DAY_OF_WEEK_IN_MONTH: //F
var days = date.getDate();
replacement = Math.floor(days / 7);
break;
case patterns.PATTERN_WEEK_OF_YEAR: //w
var days = dayOfTheYear(date);
replacement = Math.ceil(days / 7);
break;
case patterns.PATTERN_WEEK_OF_MONTH: //W
var days = date.getDate();
replacement = Math.ceil(days / 7);
break;
case patterns.PATTERN_AM_PM: //a
var hours24 = date.getHours();
replacement = hours24 < 12 ? "\u4e0a\u5348" : "\u4e0b\u5348";
break;
case patterns.PATTERN_HOUR1: //h(1~12)
var hours12 = date.getHours() % 12 || 12; //0转为12
replacement = (hours12 < 10 && matchStr.length >= 2) ? "0" + hours12 : hours12;
break;
case patterns.PATTERN_HOUR0: //K(0~11)
var hours12 = date.getHours() % 12;
replacement = hours12;
break;
case patterns.PATTERN_ZONE_NAME: //z
replacement = handlerGetZoneNameValue(date)['name'];
break;
case patterns.PATTERN_ZONE_VALUE: //Z
replacement = handlerGetZoneNameValue(date)['value'];
break;
case patterns.PATTERN_ISO_DAY_OF_WEEK: //u
break;
case patterns.PATTERN_ISO_ZONE: //X
break;
default:
break;
}
return replacement;
});
}; /**
* 计算一个日期是当年的第几天
* @param date
* @returns {number}
*/
var handlerDayOfTheYear = function (date) {
var obj = new Date(date);
var year = obj.getFullYear();
var month = obj.getMonth(); //从0开始
var days = obj.getDate();
var daysArr = [31, (this.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
for (var i = 0; i < month; i++) {
days += daysArr[i];
}
return days;
}; /**
* 获得时区名和值
* @param dateObj
* @returns {{name: string, value: string}}
*/
var handlerGetZoneNameValue = function (dateObj) {
var date = new Date(dateObj);
date = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
var arr = date.toString().match(/([A-Z]+)([-+]\d+:?\d+)/);
var obj = {
'name': arr[1],
'value': arr[2]
};
return obj;
}; return {
getCurrentTime: function () {
return handlerGetCurrentTime();
}, compareTime: function (time1, time2) {
return handlerCompareTime(time1, time2);
}, isLeapYear: function (year) {
return handlerIsLeapYear(year);
}, getDaysOfMonth: function (year, month) {
return handlerGetDaysOfMonth(year, month);
}, getDaysOfMonth2: function (year, month) {
return handlerGetDaysOfMonth2(year, month);
}, fromToday: function (days) {
return handlerFromToday(days);
}, format: function (dateTime, pattern) {
return handlerFormat(dateTime, pattern);
}, dayOfTheYear: function (date) {
return handlerDayOfTheYear(date);
}, getZoneNameValue: function (dateObj) {
return handlerGetZoneNameValue(dateObj);
}
}
}();

最新文章

  1. 解决:Win 10安装软件时提示:文件系统错误 (-1073740940)
  2. html5 实现网页截屏 页面生成图片(图文)
  3. Linux 信号详解五(信号阻塞,信号未决)
  4. 随笔 高质量 C++/C 编程指南
  5. 与Python Falling In Love_Python跨台阶(环境搭建)
  6. 2017年1月7日 星期六 --出埃及记 Exodus 21:33
  7. FTP主/被动模式的原理
  8. AlarmManager用法
  9. 【python自动化第四篇:python入门进阶】
  10. 软件Scrum
  11. 在Ubuntu上安装Docker
  12. Android Annotations Eclipse 配置 (3)
  13. Excel 2010去掉网格线
  14. 图解CSS3核心技术与案例实战(1)
  15. Autofac使用代码方式进行组件注册【不需要依赖】
  16. mysqldump进行复制数据导出导入时的问题
  17. 运行VUE的前端项目
  18. 从零开始学Kotlin-使用接口(7)
  19. jmeter 使用cookie管理器
  20. [BZOJ3456]城市规划(生成函数+多项式求逆+多项式求ln)

热门文章

  1. react第十八单元(redux中间件redux-thunk,redux工程目录的样板代码,规范目录结构)
  2. FFmpeg 初级使用
  3. 最全Python正则表达式来袭
  4. 安装篇五:安装MySQL(5.6.38版本)
  5. 【程序包管理】Linux软件管理之src源码安装编译
  6. [leetcode]53Maximum Subarray动态规划经典题目:最大子串问题
  7. Qt学习笔记-支持Gif动画显示
  8. ThreadLocal源码深度剖析
  9. UNION An Unreferenced Metric for Evaluating Open-ended Story Generation精读
  10. .Net Core — 依赖注入