z-react-ui
Version:
z-react-ui,是一款基于 Dumi,由 React + TypeScript 开发的组件库 🎉。
135 lines (110 loc) • 3.3 kB
JavaScript
/**
* 获取时间解析为字符串文本
*/
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);
}