UNPKG

xms-basic-util

Version:

js基础工具类集合,集成方便后期调用,通过webpack编译,支持多种平台,如es6、node、浏览器引入等 ## 使用 ### es6方法 - 安装 ``` npm install xms-basic-util ``` - 导入 ``` import xmsBasicUtil from 'xms-basic-util' //日期转换工具对象 const dateFormat = xmsBasicUtil.dateFormat; //数字处理工具对象 const mathUtil = xmsBasicUt

273 lines (253 loc) 7.71 kB
/** * 日期格式 * y(Y):年份,m(M):月份,d(D):日 */ const DATE_FORMAT = { SDF_DATE:'yyyy-MM-dd', //只有年月日 SDF_DATE_SECOND:'yyyy-MM-dd HH:mm:ss', SDF_DATE_MINUTE:'yyyy-MM-dd HH:mm', SDF_DATE_MONTH_MINUTE:'MM-dd HH:mm', SDF_HOUR_TIME:'HH:mm:ss', //只有时分秒 SDF_DATE_CN:'yyyy年MM月dd日' //中文年月日 } /** * 给日期原型增加格式化方法 * @param fmt * @returns {string|void} */ Date.prototype.format = function (fmt){ let o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "H+": this.getHours(), //小时 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "S": this.getMilliseconds() //毫秒 }; // 获取年份 if (/(y+)/i.test(fmt)) { fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (let k in o) { if (new RegExp("(" + k + ")").test(fmt)) { fmt = fmt.replace( RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); } } return fmt; } /** * 日期转成指定格式,默认为SDF_DATE * @param timestamp 1614049156378 * @returns {string|void} */ function dateFormat(date, format) { format = format || DATE_FORMAT.SDF_DATE; if (!date) { date = new Date(); } return date.format(format); } /** * 时间戳转日期 * @param timestamp 1614049156378 * @returns {Date} */ function timestampDate(timestamp){ let date = new Date(); if (timestamp) { //检查传入的timestamp格式是否正常 if (typeof timestamp !== 'number' || timestamp.toString().length !== 13) { throw `timestamp格式不对,必须为13位的数字,类似1614049156378,当前参数为${timestamp}`; } date = new Date(timestamp); } return date; } /** * 时间戳格式转换 * @param timestamp 1614049156378 * @param format 没传默认成DATE_FORMAT.SDF_DATE_SECOND */ function timestampFormat(timestamp, format) { format = format || DATE_FORMAT.SDF_DATE_SECOND; let date = timestampDate(timestamp); return dateFormat(date, format); } /** * 时间戳转成年月日 * @aram timestamp 1614049156378 * return:2021-02-23 */ function timestampToDate(timestamp) { return timestampFormat(timestamp, DATE_FORMAT.SDF_DATE) } /** * 时间戳转成年 月日 时 分 秒 * @aram timestamp 1614049156378 * return:2021-02-23 10:59:16 */ function timestampToDateTime(timestamp) { return timestampFormat(timestamp, DATE_FORMAT.SDF_DATE_SECOND) } /** * 时间戳转成指定格式.支持进行月份计算,month:正数:增加月份;负数:减少月份 * @param timestamp * @param month * @param format * @returns {Date} */ function timestampAddMonth(timestamp, month, format) { let date = timestampDate(timestamp); return dateAddMonth(date, month, format) } /** * 时间戳转成指定格式.支持进行天数计算,day:正数:增加天数;负数:减少天数 * @param timestamp * @param month * @param format * @returns {string|void} */ function timestampAddDay(timestamp, day, format) { let date = timestampDate(timestamp); return dateAddDay(date, day, format); } /** * 时间字符串转日期 * @param time 20210106101605570 * @returns {Date} */ function timeDate(time){ let date = new Date(); if (time) { try { time = time.toString(); let year = time.substring(0, 4); let month = time.substring(4, 6) let day = time.substring(6, 8) let hour = time.substring(8, 10) let minute = time.substring(10, 12) let second = time.substring(12, 14) date = new Date(year,month-1,day,hour,minute,second); } catch(e){ throw `time格式不对,时间格式类似:20210106101605570,当前参数为${time}` } } return date; } /** * @param time 20210106101605570 * @param format 没传默认成DATE_FORMAT.SDF_DATE_SECOND * @returns {string|void} */ function timeFormat(time, format) { format = format || DATE_FORMAT.SDF_DATE_SECOND; let date = timeDate(time); return dateFormat(date, format); } /** * 时间字符串转成年月日 * @aram time 20210106101605570 * return:2021-02-23 */ function timeToDate(time) { return timeFormat(time, DATE_FORMAT.SDF_DATE) } /** * 时间字符串转成年 月日 时 分 秒 * @aram time 20210106101605570 * return:2021-02-23 10:59:16 */ function timeToDateTime(time) { return timeFormat(time, DATE_FORMAT.SDF_DATE_SECOND) } /** * 时间字符串转成指定格式.支持进行月份计算,month:正数:增加月份;负数:减少月份 * @param timestamp * @param month * @param format * @returns {Date} */ function timeAddMonth(time, month, format) { let date = timeDate(time); return dateAddMonth(date, month, format) } /** * 时间字符串转成指定格式.支持进行天数计算,day:正数:增加天数;负数:减少天数 * @param timestamp * @param month * @param format * @returns {string|void} */ function timeAddDay(time, day, format) { let date = timeDate(time); return dateAddDay(date, day, format); } /** * 日期格式转换成指定格式.支持进行月份计算,month:正数:增加月份;负数:减少月份 * @param timestamp * @param month * @param format * @returns {string|void} */ function dateAddMonth(date, month, format) { if (month) { date.setMonth(date.getMonth() + month) } return dateFormat(date, format); } /** * 日期格式转换成指定格式.支持进行天数计算,day:正数:增加天数;负数:减少天数 * @param timestamp * @param day * @param format * @returns {string|void} */ function dateAddDay(date, day, format) { if (day) { date.setDate(date.getDate() + day) } return dateFormat(date, format); } export default { DATE_FORMAT, dateFormat, dateAddMonth, dateAddDay, timestampDate, timestampFormat, timestampToDate, timestampToDateTime, timestampAddMonth, timestampAddDay, timeDate, timeFormat, timeToDate, timeToDateTime, timeAddMonth, timeAddDay } // var now = new Date(); // console.log(dateFormat()) // console.log(dateFormat(new Date())) // console.log(dateFormat(new Date(), DATE_FORMAT.SDF_HOUR_TIME)) // console.log(timeDate()) // console.log(timeDate(20210106101605570)) // console.log(timeFormat(20210106101605570)) // console.log(timeAddMonth(20210106101605570, -2)) // console.log(timeAddDay(20210106101605570,-3)) // console.log(timeToDate('20210106101605570')) // // console.log(timestampAddMonth('20210106101605570', 3)) // console.log(timeToDateTime()) // console.log(timestampToDateTime(1614049156378)) // console.log(timestampAddMonth(1614049156378, 11)) // console.log(timestampAddMonth(1614049156378, 11, DATE_FORMAT.SDF_DATE_SECOND)) // console.log(timestampAddMonth()) // console.log(timestampAddDay(1614049156378, -6, DATE_FORMAT.SDF_DATE_SECOND)) // console.log(timeAddDay()) //2021-01-06 10:16:05 // console.log(timeAddDay(20210106101605570)) //2021-01-06 10:16:05 // console.log(timeAddDay(20210106101605570, 3)) //2021-01-06 10:16:05 // console.log(timeAddDay(20210106101605570, -3)) //2021-01-06 10:16:05 // console.log(timeAddDay(20210106101605570, -3, DATE_FORMAT.SDF_DATE_SECOND)) // console.log(timeFormat(20210419203306147, DATE_FORMAT.SDF_DATE_MINUTE))