UNPKG

@orca-fe/tools

Version:
104 lines (100 loc) 2.81 kB
import moment from 'moment'; /** * 对时间进行更友好的展示 * @param input 需要进行转换的时间 * @param now 对比的时间,默认为当前时间 */ export function smartDateFromNow(input, nowInput = undefined) { var now = moment(nowInput); var yearDiff = now.diff(input, 'year'); if (yearDiff > 0) return `${yearDiff} 年前`; var monthDiff = now.diff(input, 'month'); if (monthDiff > 0) return `${monthDiff} 个月前`; var dayDiff = now.diff(input, 'day'); if (dayDiff > 0) return `${dayDiff} 天前`; var hourDiff = now.diff(input, 'hour'); if (hourDiff > 0) return `${hourDiff} 小时前`; var minute = now.diff(input, 'minute'); if (minute > 0) return `${minute} 分钟前`; return '刚刚'; } // 时间范围相关工具 export function endOfDay(todayInput = undefined) { var today = moment(todayInput); return today.hour(23).minute(59).second(59).millisecond(999); } /** * 获得一个时间范围 * @param type 范围类型 */ export function getDateRange(type, todayInput = undefined) { var now = moment(todayInput); var startDay = now.clone().hour(0).minute(0).second(0).millisecond(0); var range; switch (type) { case 'minute': range = { start: now.clone().second(0).millisecond(0), end: now.clone().second(59).millisecond(999) }; break; case 'hour': range = { start: now.clone().minute(0).second(0).millisecond(0), end: now.clone().minute(59).second(59).millisecond(999) }; break; case 'day': range = { start: startDay, end: endOfDay(startDay) }; break; case 'week': { var start = startDay.add(-1 * now.day() + 1, 'day'); range = { start, end: endOfDay(start.clone().add(6, 'day')) }; // 从周一开始 break; } case 'month': { // 从本月第一天开始 var _start = startDay.add(-1 * now.date() + 1, 'day'); range = { start: _start, end: endOfDay(_start.clone().add(1, 'month').add(-1, 'day')) }; break; } case 'season': { // month % 3 计算季度第一个月 var month = now.month(); var _start2 = startDay.month(month - month % 3).date(1); range = { start: _start2, end: endOfDay(_start2.clone().add(3, 'month').add(-1, 'day')) }; break; } case 'year': { var _start3 = startDay.month(0).date(1); range = { start: _start3, end: endOfDay(_start3.clone().add(1, 'year').add(-1, 'day')) }; break; } default: range = { start: undefined, end: undefined }; break; } return range; }