@orca-fe/tools
Version:
front-end tools
104 lines (100 loc) • 2.81 kB
JavaScript
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;
}