function formatTime(time) { if (typeof time !== 'number' || time < 0) { return time } var hour = parseInt(time / 3600) time = time % 3600 var minute = parseInt(time / 60) time = time % 60 var second = time return ([hour, minute, second]).map(function(n) { n = n.toString() return n[1] ? n : '0' + n }).join(':') } function formatLocation(longitude, latitude) { if (typeof longitude === 'string' && typeof latitude === 'string') { longitude = parseFloat(longitude) latitude = parseFloat(latitude) } longitude = longitude.toFixed(2) latitude = latitude.toFixed(2) return { longitude: longitude.toString().split('.'), latitude: latitude.toString().split('.') } } var dateUtils = { UNITS: { '年': 31557600000, '月': 2629800000, '天': 86400000, '小时': 3600000, '分钟': 60000, '秒': 1000 }, humanize: function(milliseconds) { var humanize = ''; for (var key in this.UNITS) { if (milliseconds >= this.UNITS[key]) { humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前'; break; } } return humanize || '刚刚'; }, format: function(dateStr) { var date = this.parse(dateStr) var diff = Date.now() - date.getTime(); if (diff < this.UNITS['天']) { return this.humanize(diff); } var _format = function(number) { return (number < 10 ? ('0' + number) : number); }; return date.getFullYear() + '/' + _format(date.getMonth() + 1) + '/' + _format(date.getDay()) + '-' + _format(date.getHours()) + ':' + _format(date.getMinutes()); }, parse: function(str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串,转化为一个Date对象 var a = str.split(/[^0-9]/); return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]); }, formateDate: function(newdate, format) { const date = { 'M+': newdate.getMonth() + 1, 'd+': newdate.getDate(), 'h+': newdate.getHours(), 'm+': newdate.getMinutes(), 's+': newdate.getSeconds(), 'q+': Math.floor((newdate.getMonth() + 3) / 3), 'S+': newdate.getMilliseconds() }; if (/(y+)/i.test(format)) { format = format.replace(RegExp.$1, (newdate.getFullYear() + '').substr(4 - RegExp.$1.length)); } for (const k in date) { if (new RegExp('(' + k + ')').test(format)) { format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? date[k] : ('00' + date[k]).substr(('' + date[k]).length)); } } return format; }, getFirstDayOfWeek: function(date) { var day = date.getDay() || 7; var result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1 - day); return result; }, getLastDayOfWeek: function(date) { var day = date.getDay() || 7; var result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 7 - day); return result; }, /**获取当年第一天 */ getCurrentYearFirstDate: function(now) { const nowyear = now.getFullYear() + ''; // 获取年(yyyy) // 调用格式化方法 const firstDate = new Date(nowyear + '/01' + '/01'); return firstDate; }, /**获取当年最后一天 */ getCurrentYearLastDate: function(now) { const year = now.getFullYear() + 1; // 获取年(yyyy) // 调用格式化方法 const nextyear = new Date(year + '/01' + '/01'); nextyear.setDate(nextyear.getDate() - 1); return nextyear; }, /**获取当月月第一天 */ getCurrentMonFirstDate: function(now) { const nowyear = now.getFullYear() + ''; // 获取年(yyyy) let nowmonth = now.getMonth() + 1 + ''; // 获取月份(0-11,0代表1月) // 调用格式化方法 nowmonth = this.dateformat(nowmonth); const firstDate = new Date(nowyear + '/' + nowmonth + '/01'); return firstDate; }, /**获取当月月最后一天 */ getCurrentMonLastDate: function(now) { const nextMonFirstDate = this.getNextMonFirstDate(now); nextMonFirstDate.setDate(nextMonFirstDate.getDate() - 1); return nextMonFirstDate; }, /**获取下个月第一天 */ getNextMonFirstDate: function(now) { const currentMonFirstDate = this.getCurrentMonFirstDate(now); currentMonFirstDate.setMonth(currentMonFirstDate.getMonth() + 1); return currentMonFirstDate; }, // 获取当天时间 getCurrentDate() { const today = new Date(); // 获取年份 const year = today.getFullYear(); // 获取月份 (注意,JavaScript 的月份是从0开始的,所以要加1) const month = String(today.getMonth() + 1).padStart(2, '0'); // 获取日期 const day = String(today.getDate()).padStart(2, '0'); // 格式化为 "yyyy-MM-dd" 格式 return `${year}-${month}-${day}`; }, dateformat: function(fmt) { if (fmt.length === 1) { fmt = '0' + fmt; } return fmt; } }; module.exports = { formatTime: formatTime, formatLocation: formatLocation, dateUtils: dateUtils }