UNPKG

z-react-ui

Version:

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

158 lines (126 loc) 3.88 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.parser1 = _parser; exports.parser2 = _parser2; exports.getTimeText = getTimeText; exports.getMMDDHHmmss = getMMDDHHmmss; exports.compareTime = compareTime; exports.diffHalfHour = diffHalfHour; exports.MONTH = exports.WEEK = exports.DAY = exports.HOUR = exports.MINUTE = exports.SECOND = void 0; var _dayjs = _interopRequireDefault(require("dayjs")); /** * 获取时间解析为字符串文本 */ var SECOND = 1000; // 1秒 exports.SECOND = SECOND; var MINUTE = SECOND * 60; // 1分 exports.MINUTE = MINUTE; var HOUR = MINUTE * 60; // 1小时 exports.HOUR = HOUR; var DAY = HOUR * 24; // 1天 exports.DAY = DAY; var WEEK = DAY * 7; // 1周 exports.WEEK = WEEK; var MONTH = DAY * 30; // 1个月 /** * 解析规则 * 去年:YYYY-MM-DD HH:mm * 今年今天: 上午hh:mm、下午hh:mm * 今年今天之前: MM-DD HH:mm */ exports.MONTH = MONTH; function _parser(time) { var today = (0, _dayjs.default)(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 = (0, _dayjs.default)(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分钟内 */ function _parser2(time) { var resault = ''; var dateTimeStamp = +(0, _dayjs.default)(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; } function getTimeText(time) { return { parser1: function parser1() { return _parser(time); }, parser2: function parser2() { return _parser2(time); } }; } function getMMDDHHmmss(time) { return (0, _dayjs.default)(time).format('MM-DD/HH:mm:ss'); } /** * 比较两个时间相差多久 * @param time1 比较时间1 * @param time2 比较时间2 * @param diffTime 相差时间 * @returns 若diffTime存在,time1和time2相差时间小于diffTIme,则返回true,否则false; */ function compareTime(time1, time2, diffTime) { var compareDiffTime = (0, _dayjs.default)(time1).diff((0, _dayjs.default)(time2)); if (diffTime === 0 || diffTime) { return Math.abs(compareDiffTime) <= diffTime; } return compareDiffTime; } // 相差30分钟 function diffHalfHour(time1, time2) { return compareTime(time1, time2, HOUR / 2); }