JS的一些时间获取和计算公用方法封装
又是一个记录博客,不想废话的一天。。。。
自己之前写的时间计算和日期格式化的源码整理,直接看代码吧~~
/*** 判断年份是否为润年* @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的一些时间获取和计算公用方法封装相关推荐
- js根据ip地址获取省份城市的方法
今天发现新浪的IP地址查询接口已经访问不了,也就是说不能用了,然后重新试了其他的,找到搜狐的ip地址可以用 不能用 新浪的IP地址查询接口 http://int.dpool.sina.com.cn/i ...
- JavaScript 关于 Date() 时间函数的运用以及方法封装
前言 此,主要是记录自己平时会常用到的一些Date操作方法封装,以及Date中比较好用的一些方法运用,希望能帮助到你. 学习路径:MDN-Date(MDN上面有详细的介绍属性语法,感兴趣可以点过去看看 ...
- js输出当前时间,以及计算学生成绩的demo
部分js内置对象 一.indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. stringObject.indexOf(substring, startpos) 该方法将从头到尾地 ...
- 与时间相关的java源码_Java 基于当前时间获取和计算时间
import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java. ...
- js 中英文混合字符串 截取固定长度字节 方法封装
function(str, len) {var regexp = /[^\x00-\xff]/g;if (str.replace(regexp, "aa").length < ...
- 获取JavaScript时间戳函数的方法和js时间戳转时间方法
文章目录 一.JavasCRIPT时间转时间戳 方法一:Date.now() 方法三:valueOf() 方法四:getTime() 方法五:Number 二.js时间戳转时间 方法一:生成'yyyy ...
- js将时间转换为时间戳计算
js将时间转换为时间戳计算 var qsrq = "2021-06-09 10:00";var jsrq = "2021-06-09 12:10";qsrq = ...
- js根据年度周次获取时间,以及根据时间获取周次
根据年度,周次,已经你要获取周几.来获取时间 //更具年的周次获取时间范围 function dateFromWeek(year, week, day){// year 年// week 周// da ...
- 【js Date】时间字符串、时间戳转换成今天,明天,本月等文字日期
作为前端开发攻城师,难免对时间进行各种计算和格式转换,一个js的Date对象统统可以搞定. 下例是将一个具体的时间转换成今天.明天.几天之内.本月等文字描述的日期的工具函数,也可以基于它扩展,多应用于 ...
最新文章
- DtCms.DAL.WebSet.cs
- django-oscar的订单状态总是Pending
- Educational Round 64 题解
- 对 SAP UI5 一无所知的新手,从哪些材料开始学习比较好?
- solr5.5索引mysql数据(新手总结)
- 初识贪心——调度问题
- 华为回应关于“获政府巨额补贴”报道;最高法:微信微博聊天记录可作为证据;GoLand 2020.1 路线图公布 | 极客头条...
- 类和对象编程(四):拷贝构造函数
- 绕过某省某大学校园网的探索(处女作)
- Photoshop快捷键总结
- 淘宝收货地址自动补全实现
- html 批量pdf 打印,html转pdf打印
- ASO优化关键词覆盖、曝光原理
- 基于SSM+MySQL实现的酒店管理系统
- PPT和WORD转成PDF时图有黑底
- 【Python实现】微信防撤回
- 斗罗大陆服务器维护,《斗罗大陆武魂觉醒》5月20日停服维护公告
- 查询单号物流信息是否揽收教你一键操作
- Windows 2008禁止IE增强安全配置修改安全设置方法
- html5播放器的示例代码