日期工具库

/**
 * 日期工具库 日期标准格式与Java中相同为 yyyy-MM-dd HH:mm:ss
 */

if (typeof TimeUtil == 'undefined')
 TimeUtil = {};

/**
 * 获取当前日期字符串
 * @return {String}
 */
TimeUtil.getCurrDate = function() {
 return TimeUtil.getCurrTime('yyyy-MM-dd');
};
/**
 * 获取当前时间字符串
 * @param {Object} format 字符串格式
 * @return {String}
 */
TimeUtil.getCurrTime = function(format) {
 var date = new Date();
 format = format || 'yyyy-MM-dd HH:mm:ss';
 
 return TimeUtil.format(date,format);
};

/**
 * 解析日期字符串为日期对象
 * @param {Object} srcDateStr
 * @param {Object} format
 * @return {TypeName}
 */
TimeUtil.parse = function(srcDateStr, format) {
 format = format || TimeUtil.getDateFormat(srcDateStr);
  
 var year = parseInt(format.indexOf('yyyy') >= 0 ? srcDateStr.substr(format.indexOf('yyyy'), 4) : '0000', 10);
 var month = parseInt(format.indexOf('MM') >= 0 ? srcDateStr.substr(format.indexOf('MM'), 2) : '01', 10);
 var day = parseInt(format.indexOf('dd') >= 0 ? srcDateStr.substr(format.indexOf('dd'), 2) : '01', 10);
 var hour = parseInt(format.indexOf('HH') >= 0 ? srcDateStr.substr(format.indexOf('HH'), 2) : '00', 10);
 var minute = parseInt(format.indexOf('mm') >= 0 ? srcDateStr.substr(format.indexOf('mm'), 2) : '00', 10);
 var second = parseInt(format.indexOf('ss') >= 0 ? srcDateStr.substr(format.indexOf('ss'), 2) : '00', 10);
 
 var srcDate = new Date(year, month - 1, day, hour, minute, second);
 return srcDate;
};

/**
 * 格式化日期输出
 * @param {Object} srcDate 日期
 * @param {Object} format 日期格式,默认为yyyy-MM-dd
 * @return {TypeName}
 */
TimeUtil.format = function(srcDate, format) {
 
 var retDateStr = format || 'yyyy-MM-dd';
 retDateStr = retDateStr.replace(/yyyy/gi, srcDate.getFullYear());
 retDateStr = retDateStr.replace(/MM/gi, ((srcDate.getMonth() + 1) > 9 ? '' : '0') + (srcDate.getMonth() + 1));
 retDateStr = retDateStr.replace(/dd/gi, (srcDate.getDate() > 9 ? '' : '0') + srcDate.getDate());
 retDateStr = retDateStr.replace(/HH/gi, (srcDate.getHours() > 9 ? '' : '0') + srcDate.getHours());
 retDateStr = retDateStr.replace(/mm/gi, (srcDate.getMinutes() > 9 ? '' : '0') + srcDate.getMinutes());
 retDateStr = retDateStr.replace(/ss/gi, (srcDate.getSeconds() > 9 ? '' : '0') + srcDate.getSeconds());
 
 return retDateStr;
};

/**
 * 获取日期字符串的日期格式
 * @param {Object} srcDateStr 日期字符串
 * @return {String} 日期格式字符串
 * @exception {TypeName}
 */
TimeUtil.getDateFormat = function(srcDateStr) {
 switch (srcDateStr.length) {
  case 4:
   return 'yyyy';
  case 6:
   return 'yyyyMM';
  case 7:
   return 'yyyy-MM';
  case 8:
   return 'yyyyMMdd';
  case 10:
   return 'yyyy-MM-dd';
  case 13:
   return "yyyy-MM-dd HH";
  case 16:
   return "yyyy-MM-dd HH:mm";
  case 19:
   return "yyyy-MM-dd HH:mm:ss";
  default:
   throw new Error('无法识别的日期格式');
 }
};

/**
 * 两个日期间相隔的天数
 * @param {Object} dateStr1 日期1
 * @param {Object} dateStr2 日期2
 * @param {Object} dateFormat1 日期1格式
 * @param {Object} dateFormat2 日期2格式
 * @return {Int} 天数
 */
TimeUtil.daysBetween = function(dateStr1, dateStr2, dateFormat1, dateFormat2) {
 dateFormat1 = dateFormat1 ? dateFormat1 : TimeUtil.getDateFormat(dateStr1);
 dateFormat2 = dateFormat2 ? dateFormat2 : TimeUtil.getDateFormat(dateStr2);
 var date1 = TimeUtil.parse(dateStr1, dateFormat1);
 var date2 = TimeUtil.parse(dateStr2, dateFormat1);
 date1.setHours(0,0,0,0);
 date2.setHours(0,0,0,0);
 return (date1 - date2) / 86400000;
};

/**
 * 对日期进行相关域的加减
 * @param {Object} srcDateStr 原日期
 * @param {Object} field 需要操作的日期域 year,month,date,hour,minute,second
 * @param {Object} offset 加减的偏移量
 * @param {Object} format 日期格式
 * @return {TypeName}
 */
TimeUtil.addDate = function(srcDateStr, field, offset ,format) {
 offset = parseInt(offset);
 field = field.toUpperCase();
 
 var srcDate = TimeUtil.parse(srcDateStr);
 
 switch (field) {
  case 'YEAR':
   var month = srcDate.getMonth();
   srcDate.setYear(srcDate.getFullYear() + offset);
   if (srcDate.getMonth() > month)
    srcDate.setDate(0);
   break;
  case 'MONTH':
   var day = srcDate.getDate();
   srcDate.setMonth(srcDate.getMonth() + offset);
   if (srcDate.getDate() < day)
    srcDate.setDate(0);
   break;
  case 'DATE':
   srcDate.setDate(srcDate.getDate() + offset);
   break;
  case 'HOUR':
   srcDate.setHours(srcDate.getHours() + offset);
   break;
  case 'MINUTE':
   srcDate.setMinutes(srcDate.getMinutes() + offset);
   break;
  case 'SECOND':
   srcDate.setSeconds(srcDate.getSeconds() + offset);
   break;
 }
 
 return TimeUtil.format(srcDate, format);
};

/**
 * 获取当月最大的一天
 * @param {Object} yyyyMM
 * @return {TypeName}
 */
TimeUtil.getLastDay = function(yyyyMM) {
 var yyyy = Math.floor(yyyyMM / 100);
 var mm = yyyyMM % 100;
 var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
 if (mm != 2)
  return days[mm - 1];
 if (yyyy % 400 == 0 || (yyyy % 100 != 0 && yyyy % 4 == 0))
  return 29;
 return 28;
};

/**
 * 获取源日期的当月最后一天的日期
 * @param {Object} dateStr
 * @return {TypeName}
 */
TimeUtil.getLastDateOfMonth = function(dateStr) {
 var yyyy = parseInt(dateStr.substr(0, 4));
 
 var hasSep = dateStr.indexOf('-') > 0;
 var mmIndex = hasSep ? 5 : 4;
 var mm = parseInt(dateStr.substr(mmIndex, 2));
 
 var day = TimeUtil.getLastDay(yyyy * 100 + mm);
 return yyyy + (hasSep ? "-" : "") + (mm > 9 ? mm : "0" + mm) + (hasSep ? '-' : "") +
   (day > 9 ? day : "0" + day);
};

/**
 * 将日期分割成6位的数组
 * @param {Object} srcDateStr
 * @return {TypeName}
 */
TimeUtil.toArray = function(srcDateStr) {
 var date = TimeUtil.parse(srcDateStr);
 var myArray = Array();
 myArray[0] = date.getFullYear();
 myArray[1] = date.getMonth() + 1;
 myArray[2] = date.getDate();
 myArray[3] = date.getHours();
 myArray[4] = date.getMinutes();
 myArray[5] = date.getSeconds();
 return myArray;
};

 例:function refreshDataCheckExtend(checkArea) {
 var startDate = $("#cond_START_DATE").val();
 var endDate = $("#cond_END_DATE").val();
 var value = $("#cond_VALUE").val();
 var limitValue = TimeUtil.daysBetween (endDate, startDate, 'yyyy-MM-dd', 'yyyy-MM-dd');
 if (limitValue > value) {
  alert('该界面只能查询到' + value + '天以内的数据!');
  return false;
 }
 return true;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

裂魂人1214

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值