@orca-fe/tools
Version:
front-end tools
115 lines (111 loc) • 3.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.endOfDay = endOfDay;
exports.getDateRange = getDateRange;
exports.smartDateFromNow = smartDateFromNow;
var _moment = _interopRequireDefault(require("moment"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* 对时间进行更友好的展示
* @param input 需要进行转换的时间
* @param now 对比的时间,默认为当前时间
*/
function smartDateFromNow(input) {
var nowInput = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
var now = (0, _moment.default)(nowInput);
var yearDiff = now.diff(input, 'year');
if (yearDiff > 0) return "".concat(yearDiff, " \u5E74\u524D");
var monthDiff = now.diff(input, 'month');
if (monthDiff > 0) return "".concat(monthDiff, " \u4E2A\u6708\u524D");
var dayDiff = now.diff(input, 'day');
if (dayDiff > 0) return "".concat(dayDiff, " \u5929\u524D");
var hourDiff = now.diff(input, 'hour');
if (hourDiff > 0) return "".concat(hourDiff, " \u5C0F\u65F6\u524D");
var minute = now.diff(input, 'minute');
if (minute > 0) return "".concat(minute, " \u5206\u949F\u524D");
return '刚刚';
}
// 时间范围相关工具
function endOfDay() {
var todayInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
var today = (0, _moment.default)(todayInput);
return today.hour(23).minute(59).second(59).millisecond(999);
}
/**
* 获得一个时间范围
* @param type 范围类型
*/
function getDateRange(type) {
var todayInput = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
var now = (0, _moment.default)(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: 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;
}