z-react-ui
Version:
z-react-ui,是一款基于 Dumi,由 React + TypeScript 开发的组件库 🎉。
158 lines (126 loc) • 3.88 kB
JavaScript
"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);
}