/** * * 全局时间转换 * @parmas time 时间戳默认为11位时间戳 * @parmas all 为true时time为13位时间戳 */ function formatTime(time, all) { console.log(time) time = all ? time * 1000 : 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]) } } /** * 格式化价格为两位小数 * @param {number|string} price - 需要格式化的价格 * @param {number} decimals - 小数位数,默认为2 * @returns {string} 格式化后的价格字符串 */ function formatPrice(price, decimals = 2) { // 输入验证 if (price === null || price === undefined || price === '') { return '0.00'; } // 转换为数字 const numPrice = typeof price === 'string' ? parseFloat(price) : price; // 检查是否为有效数字 if (isNaN(numPrice)) { console.warn('formatPrice: Invalid price value:', price); return '0.00'; } // 格式化为指定小数位数 return numPrice.toFixed(decimals); } module.exports = { formatTime: formatTime, formatLocation: formatLocation, dateUtils: dateUtils, formatPrice: formatPrice }