Javascript日期操作工具

来源:互联网 发布:度假房产知乎 编辑:程序博客网 时间:2024/06/07 00:49
;(function(win, undefined){// 暴露接口var DateUtils = win.DateUtils = win.DateUtils || {};// 各月份总天数var DAYS_OF_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];/** * 检测年份是否为闰年 * @param date Date|String|Number * @returntrue 参数为Date型且该年份为闰年,或者日期格式字符串所对应日期为闰年,或者数字date为闰年 *false反之,返回false */DateUtils.isLeap = function(date){// 若参数为空,则返回falseif(date == null){return false;}// 若参数为字符串,转化为Date型if(typeof date === 'string'){date = DateUtils.parse(date);}var year = typeof date === 'number' ? date : date.getFullYear();return (year % 100 != 0 && year % 4 == 0) || year % 400 == 0;}/** * 日期格式化 * @param date 日期 * @param format 格式 * @return Date */DateUtils.format = function(date, format){if(date == null){return '';}date = DateUtils.parse(date);format = format || 'yyyy-MM-dd';var o = { "M+" : date.getMonth()+1, //month "d+" : date.getDate(), //day "h+" : date.getHours(), //hour "m+" : date.getMinutes(), //minute "s+" : date.getSeconds(), //second "q+" : Math.floor((date.getMonth()+3)/3), //quarter "S" : date.getMilliseconds() //millisecond };if(/(y+)/.test(format)) { format = format.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length)); } for(var k in o) { if(new RegExp("("+ k +")").test(format)) { format = format.replace(RegExp.$1, RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length)); } } return format;}/** * 将String或Number或Date转化为Date * @param date 日期格式字符串或时间戳,字符串应为yyyy-MM-dd或yyyy/MM/dd格式 * @return Date */DateUtils.parse = function(date){// 参数为时间戳或日期,直接返回日期if(typeof date === 'number' || date instanceof Date){return new Date(date);}// 字符串日期,将字符串中-替换为/,兼容IEif(typeof date === 'string'){try{return new Date(date.replace(/-/g, '/'));}catch(e){throws new Error('参数' + date + '不能转化为正确的日期');}}return  null;}/** * 获取指定日期当月天数 * @param date日期或可以转化为日期的数字或字符串 * @return 日期所在月份的天数 */DateUtils.getDaysOfMonth = function(date){// 将参数转化为日期date = DateUtils.parse(date);date.setDate(1);date.setMonth(date.getMonth() + 1);date.setDate(0);return date.getDate();}/** * 获取指定日期当月第一天 * @param date日期或可以转化为日期的数字或字符串 * @return 日期所在月份的一号 */DateUtils.getFirstDateOfMonth = function(date){date = DateUtils.parse(date);date.setDate(1);return date;}/** * 获取指定日期当月最后一天 * @param date日期或可以转化为日期的数字或字符串 * @return 日期所在月份的最后一天 */DateUtils.getLastDateOfMonth = function(date){date = DateUtils.parse(date);date.setDate(DateUtils.getDaysOfMonth(date));return date;}/** * 获取系统时间 * @return 系统时间 */DateUtils.now = function(){return new Date();}/** * 将给定日期加上指定天数 * @param date日期或可以转化为日期的数字或字符串 * @param days天数 * @return 增加指定天数后的日期 */DateUtils.add = function(date, days){date = DateUtils.parse(date);date.setDate(date.getDate() + days);return date;}/** * 获取给定日期在一年中是第几天 * @param date日期或可以转化为日期的数字或字符串 * @return 给定日期在当年是第几天 */DateUtils.indexOfYear = function(date){date = DateUtils.parse(date);// 闰年二月29天if(DateUtils.isLeap(date)){DAYS_OF_MONTH[1] = 29;}// 计算日期索引var m = date.getMonth();var index = 0;while(m--){index += DAYS_OF_MONTH[m];}return index + date.getDate();}})(window);

0 0
原创粉丝点击