又是一个记录博客,不想废话的一天。。。。
自己之前写的时间计算和日期格式化的源码整理,直接看代码吧~~

/*** 判断年份是否为润年* @param {Number} year* @return {Boolean}*/
isLeapYear: function (year) {return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
},/*** 获取某一年份的某一月份的天数* @param {Number} year* @param {Number} month* @return {String}*/
getMonthDays: function (year, month) {return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month] || (isLeapYear(year) ? 29 : 28);
},/*** 获取某年的某天是第几周* @param {Number} y* @param {Number} m* @param {Number} d* @returns {Number}*/
getWeekNumber: function (y, m, d, curDate) {var now = curDate;if (now == '') {now = new Date(y, m - 1, d);}var year = now.getFullYear(),month = now.getMonth(),days = now.getDate();//那一天是那一年中的第多少天for (var i = 0; i < month; i++) {days += getMonthDays(year, i);}//那一年第一天是星期几var yearFirstDay = new Date(year, 0, 1).getDay() || 7;var week = null;if (yearFirstDay == 1) {week = Math.ceil(days / yearFirstDay);} else {days -= (7 - yearFirstDay + 1);week = Math.ceil(days / 7) + 1;}return week;
},
/*** 日期转换* @return*/
formatDate: {format: function (date, pattern) {pattern = pattern || DEFAULT_PATTERN;return pattern.replace(SIGN_REGEXP, function ($0) {switch ($0.charAt(0)) {case 'y': return padding(date.getFullYear(), $0.length);case 'M': return padding(date.getMonth() + 1, $0.length);case 'd': return padding(date.getDate(), $0.length);case 'w': return date.getDay() + 1;case 'h': return padding(date.getHours(), $0.length);case 'm': return padding(date.getMinutes(), $0.length);case 's': return padding(date.getSeconds(), $0.length);}});},parse: function (dateString, pattern) {var matchs1 = pattern.match(SIGN_REGEXP);var matchs2 = dateString.match(/(\d)+/g);if (matchs1.length == matchs2.length) {var _date = new Date(1970, 0, 1);for (var i = 0; i < matchs1.length; i++) {var _int = parseInt(matchs2[i]);var sign = matchs1[i];switch (sign.charAt(0)) {case 'y': _date.setFullYear(_int); break;case 'M': _date.setMonth(_int - 1); break;case 'd': _date.setDate(_int); break;case 'h': _date.setHours(_int); break;case 'm': _date.setMinutes(_int); break;case 's': _date.setSeconds(_int); break;}}return _date;}return null;},formatTo: function(dateString, pattern) {var date = new Date(dateString);pattern  = pattern || DEFAULT_PATTERN;return pattern.replace(SIGN_REGEXP, function ($0) {switch ($0.charAt(0)) {case 'y': return padding(date.getFullYear(), $0.length);case 'M': return padding(date.getMonth() + 1, $0.length);case 'd': return padding(date.getDate(), $0.length);case 'w': return date.getDay() + 1;case 'h': return padding(date.getHours(), $0.length);case 'm': return padding(date.getMinutes(), $0.length);case 's': return padding(date.getSeconds(), $0.length);}});}
},
/*** 获取当前时间段* @return */
getNowDate: function() {var date = new Date();var year = date.getFullYear();var month = aqqConvert(date.getMonth() + 1);var day  = aqqConvert(date.getDate());var hour = aqqConvert(date.getHours());var minute = aqqConvert(date.getMinutes());var second = aqqConvert(date.getSeconds());var nowTime = year+month+day+hour+minute+second;return nowTime;
},/*** 获取当前时间段* @return */
getNowDateByYYYMMDD: function() {var date = new Date();var year = date.getFullYear();var month = aqqConvert(date.getMonth() + 1);var day  = aqqConvert(date.getDate());var nowTime = year+'-'+month+'-'+day;return nowTime;
},/*** 获取要计算时间的前或者后N天* @param requestDay 需要开始推算的时间* @param days 间隔天数* @param type 向前或者向后推算(0:向前推算;1:向后推算)* @return */
getAgoOrBackwardData: function(requestDay,days,type) {let date = Date.parse(new Date(requestDay+' 00:00:00'));if(type == 0){date = new Date(date - days * 24 * 3600 * 1000)} else {date = new Date(date + days * 24 * 3600 * 1000)}var year = date.getFullYear();var month = aqqConvert(date.getMonth() + 1);var day = aqqConvert(date.getDate());var nowTime = year+'-'+month+'-'+day;return nowTime;
},/*** 获取某一天所在周的开始日期以及结束日期* @param requestDay 需要获取的时间* @return */
getWeekData: function(requestDay) {let now = '';if(requestDay) {now = new Date(requestDay); // 日期} else {now = new Date(); // 日期}let nowDayOfWeek = now.getDay(); // 本周的第几天// let nowDay = now.getDate()+1; // 当前日let nowDay = now.getDate(); // 当前日let nowMonth = now.getMonth(); // 当前月let nowYear = now.getFullYear(); // 当前年let weekStart = this.getWeekStartDate(nowYear, nowMonth, nowDay, nowDayOfWeek)let weekEnd = this.getWeekEndDate(nowYear, nowMonth, nowDay, nowDayOfWeek)let weekFormat = [weekStart,weekEnd]return weekFormat;
},// 获得某一周的开始日期
getWeekStartDate(nowYear, nowMonth, nowDay, nowDayOfWeek) {var day = nowDayOfWeek || 7;// let weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek)let weekStartDate = new Date(nowYear, nowMonth, nowDay + 1 - day);return this.formatDateTo(weekStartDate,'-')
},// 获得某一周的结束日期
getWeekEndDate(nowYear, nowMonth, nowDay, nowDayOfWeek) {// let weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek))var day = nowDayOfWeek || 7;let weekEndDate = new Date(nowYear, nowMonth, nowDay + 7 - day)return this.formatDateTo(weekEndDate,'-')
},// 日期格式化
formatDateTo(date,splitStr) {var myyear = date.getFullYear();var mymonth = date.getMonth() + 1;var myweekday = date.getDate();if (mymonth < 10) {mymonth = "0" + mymonth;}if (myweekday < 10) {myweekday = "0" + myweekday;}return myyear+ splitStr+ mymonth + splitStr + myweekday
},/*** 获取往前时间段* @param days 间隔天数* @param otherdate 需要开始推算的时间* @return */
getRangeDate: function(days,otherdate,pattern) {if(undefined !== otherdate && otherdate) {var date = new Date(otherdate);} else {var date = new Date();}var year = date.getFullYear();var month = aqqConvert(date.getMonth() + 1);var day = aqqConvert(date.getDate());var hour = aqqConvert(date.getHours());var minute = aqqConvert(date.getMinutes());var second = aqqConvert(date.getSeconds());if(pattern =='d') {var endTime = year + '-' + month + '-' + day;} else {var endTime = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;}var date = new Date(date.getTime() - days * 24 * 3600 * 1000);var year = date.getFullYear();var month = aqqConvert(date.getMonth() + 1);var day = aqqConvert(date.getDate());var hour = aqqConvert(date.getHours());var minute = aqqConvert(date.getMinutes());var second = aqqConvert(date.getSeconds());if(pattern =='d') {var startTime = year + '-' + month + '-' + day;} else {var startTime = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;}var param = [startTime,endTime];        return param;
},/*** 获取过后时间段* @param days 间隔天数* @param otherdate 需要开始推算的时间* @return */
getFutureRangeDate: function(days,otherdate) {if(undefined !== otherdate && otherdate) {var date = new Date(otherdate);} else {var date = new Date();}var year = date.getFullYear();var month = aqqConvert(date.getMonth() + 1);var day = aqqConvert(date.getDate());var hour = aqqConvert(date.getHours());var minute = aqqConvert(date.getMinutes());var second = aqqConvert(date.getSeconds());var startTime = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;var date = new Date(date.getTime() + days * 24 * 3600 * 1000);var year = date.getFullYear();var month = aqqConvert(date.getMonth() + 1);var day = aqqConvert(date.getDate());var hour = aqqConvert(date.getHours());var minute = aqqConvert(date.getMinutes());var second = aqqConvert(date.getSeconds());var endTime = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;var param = [startTime,endTime];return param;
},/*** 获得上个月在昨天这一天的日期* @param days 间隔天数* @param otherdate 需要开始推算的时间* @return */
getLastMonthYestdy(){var date = new Date();var daysInMonth = new Array([0],[31],[28],[31],[30],[31],[30],[31],[31],[30],[31],[30],[31]);var endYear = date.getFullYear();var endMonth = date.getMonth()+1;var endDay = date.getDate();var endTime = endYear + '-' + aqqConvert(endMonth) + '-' + aqqConvert(endDay);var startYear = endYear;var startMonth = endMonth;var startDay = endDay;if(startYear%4 == 0 && startYear%100 != 0){daysInMonth[2] = 29;}if(startMonth - 1 == 0){startYear -= 1;startMonth = 12;} else {startMonth -= 1;}startDay = daysInMonth[startMonth] >= startDay ? startDay+1 : daysInMonth[startMonth];var startTime = startYear+"-"+aqqConvert(startMonth)+"-"+aqqConvert(startDay);var param = [startTime,endTime];return param;},/*** 是否在系统配置时间段内* @param min 最小时间* @param max 最大时间* @param sysInfo 系统信息* @return Blooen*/
bettweenSysDate: function (min, max, sysInfo) {if(min == undefined || max == undefined || sysInfo == undefined) {return false;}let sysMin  = sysInfo.SP_SYSTEM_TABLE_MIN.pvalue;let sysMax  = sysInfo.SP_SYSTEM_TABLE_MAX.pvalue;if(min >=sysMin && max <=sysMax){return true;}return false;
},

JS的一些时间获取和计算公用方法封装相关推荐

  1. js根据ip地址获取省份城市的方法

    今天发现新浪的IP地址查询接口已经访问不了,也就是说不能用了,然后重新试了其他的,找到搜狐的ip地址可以用 不能用 新浪的IP地址查询接口 http://int.dpool.sina.com.cn/i ...

  2. JavaScript 关于 Date() 时间函数的运用以及方法封装

    前言 此,主要是记录自己平时会常用到的一些Date操作方法封装,以及Date中比较好用的一些方法运用,希望能帮助到你. 学习路径:MDN-Date(MDN上面有详细的介绍属性语法,感兴趣可以点过去看看 ...

  3. js输出当前时间,以及计算学生成绩的demo

    部分js内置对象 一.indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. stringObject.indexOf(substring, startpos) 该方法将从头到尾地 ...

  4. 与时间相关的java源码_Java 基于当前时间获取和计算时间

    import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java. ...

  5. js 中英文混合字符串 截取固定长度字节 方法封装

    function(str, len) {var regexp = /[^\x00-\xff]/g;if (str.replace(regexp, "aa").length < ...

  6. 获取JavaScript时间戳函数的方法和js时间戳转时间方法

    文章目录 一.JavasCRIPT时间转时间戳 方法一:Date.now() 方法三:valueOf() 方法四:getTime() 方法五:Number 二.js时间戳转时间 方法一:生成'yyyy ...

  7. js将时间转换为时间戳计算

    js将时间转换为时间戳计算 var qsrq = "2021-06-09 10:00";var jsrq = "2021-06-09 12:10";qsrq = ...

  8. js根据年度周次获取时间,以及根据时间获取周次

    根据年度,周次,已经你要获取周几.来获取时间 //更具年的周次获取时间范围 function dateFromWeek(year, week, day){// year 年// week 周// da ...

  9. 【js Date】时间字符串、时间戳转换成今天,明天,本月等文字日期

    作为前端开发攻城师,难免对时间进行各种计算和格式转换,一个js的Date对象统统可以搞定. 下例是将一个具体的时间转换成今天.明天.几天之内.本月等文字描述的日期的工具函数,也可以基于它扩展,多应用于 ...

最新文章

  1. DtCms.DAL.WebSet.cs
  2. django-oscar的订单状态总是Pending
  3. Educational Round 64 题解
  4. 对 SAP UI5 一无所知的新手,从哪些材料开始学习比较好?
  5. solr5.5索引mysql数据(新手总结)
  6. 初识贪心——调度问题
  7. 华为回应关于“获政府巨额补贴”报道;最高法:微信微博聊天记录可作为证据;GoLand 2020.1 路线图公布 | 极客头条...
  8. 类和对象编程(四):拷贝构造函数
  9. 绕过某省某大学校园网的探索(处女作)
  10. Photoshop快捷键总结
  11. 淘宝收货地址自动补全实现
  12. html 批量pdf 打印,html转pdf打印
  13. ASO优化关键词覆盖、曝光原理
  14. 基于SSM+MySQL实现的酒店管理系统
  15. PPT和WORD转成PDF时图有黑底
  16. 【Python实现】微信防撤回
  17. 斗罗大陆服务器维护,《斗罗大陆武魂觉醒》5月20日停服维护公告
  18. 查询单号物流信息是否揽收教你一键操作
  19. Windows 2008禁止IE增强安全配置修改安全设置方法
  20. html5播放器的示例代码

热门文章

  1. UVA148 ZOJ1166 Anagram checker【DFS】
  2. Bailian3708 1的个数【进制】
  3. HDU2520 我是菜鸟,我怕谁【水题】
  4. CCF NOI1011 正方形
  5. POJ NOI MATH-7833 幂的末尾
  6. TensorFlow 学习(十三)—— tf.app.flags
  7. 使用异或解题 —— 序列中仅出现一次的两个数
  8. 负数的移位、有符号数的移位转换为无符号数的移位
  9. 强悍的 ubuntu —— samba 实现 ubuntu 与 windows 之间的文件共享
  10. 机器学习实践指南(三)—— 算法的调试