UNPKG

z-react-ui

Version:

z-react-ui,是一款基于 Dumi,由 React + TypeScript 开发的组件库 🎉。

135 lines (110 loc) 3.3 kB
/** * 获取时间解析为字符串文本 */ import dayjs from 'dayjs'; export var SECOND = 1000; // 1秒 export var MINUTE = SECOND * 60; // 1分 export var HOUR = MINUTE * 60; // 1小时 export var DAY = HOUR * 24; // 1天 export var WEEK = DAY * 7; // 1周 export var MONTH = DAY * 30; // 1个月 /** * 解析规则 * 去年:YYYY-MM-DD HH:mm * 今年今天: 上午hh:mm、下午hh:mm * 今年今天之前: MM-DD HH:mm */ function _parser(time) { var today = dayjs(new Date()).format('YYYY-MM-DD'); var year = today.split('-')[0]; var ZERO_HOUR = '00:00:00'; var todayStart = "".concat(today, " ").concat(ZERO_HOUR); var yearStart = "".concat(year, "-01-01 ").concat(ZERO_HOUR); var parseTime = dayjs(time); if (parseTime.isBefore(yearStart)) { // 去年 return parseTime.format('YYYY-MM-DD HH:mm'); } else if (parseTime.isBefore(todayStart)) { // 今年 // 今年今天之前 return parseTime.format('MM-DD HH:mm'); } else { var time_hhmm = parseTime.format('hh:mm'); var todayAfternoon = today + ' 12:00:00'; if (parseTime.isAfter(todayAfternoon)) { return "\u4E0B\u5348".concat(time_hhmm); } else { return "\u4E0A\u5348".concat(time_hhmm); } } } /** * 解析规则 * 超过1个月,显示 超1个月 * 1个月内则显示 x周前、x天前、x小时前、x分钟前、1分钟内 */ export { _parser as parser1 }; function _parser2(time) { var resault = ''; var dateTimeStamp = +dayjs(time); var now = +new Date(); // 计算时间差 var diffTime = now - dateTimeStamp; var monthDiff = diffTime / MONTH; var weekDiff = diffTime / WEEK; var dayDiff = diffTime / DAY; var hourDiff = diffTime / HOUR; var minDiff = diffTime / MINUTE; switch (true) { case monthDiff >= 1: // resault = dayjs(time).format('YYYY-MM-DD HH:mm'); resault = '超1个月'; break; case weekDiff >= 1: resault = "".concat(weekDiff.toFixed(0), "\u5468\u524D"); break; case dayDiff >= 1: resault = "".concat(dayDiff.toFixed(0), "\u5929\u524D"); break; case hourDiff >= 1: resault = "".concat(hourDiff.toFixed(0), "\u5C0F\u65F6\u524D"); break; case minDiff >= 1: resault = "".concat(minDiff.toFixed(0), "\u5206\u949F\u524D"); break; default: resault = '1分钟内'; break; } return resault; } export { _parser2 as parser2 }; export function getTimeText(time) { return { parser1: function parser1() { return _parser(time); }, parser2: function parser2() { return _parser2(time); } }; } export function getMMDDHHmmss(time) { return dayjs(time).format('MM-DD/HH:mm:ss'); } /** * 比较两个时间相差多久 * @param time1 比较时间1 * @param time2 比较时间2 * @param diffTime 相差时间 * @returns 若diffTime存在,time1和time2相差时间小于diffTIme,则返回true,否则false; */ export function compareTime(time1, time2, diffTime) { var compareDiffTime = dayjs(time1).diff(dayjs(time2)); if (diffTime === 0 || diffTime) { return Math.abs(compareDiffTime) <= diffTime; } return compareDiffTime; } // 相差30分钟 export function diffHalfHour(time1, time2) { return compareTime(time1, time2, HOUR / 2); }