chatui2
Version:
The React library for Chatbot UI
74 lines (69 loc) • 1.86 kB
JavaScript
var REGEX_FORMAT = /YYYY|M|D|dddd|HH|mm/g;
var parseDate = function parseDate(date) {
// if (date === null) {
// return new Date(NaN);
// }
// if (typeof date === 'undefined') {
// return new Date(); // today
// }
if (date instanceof Date) {
return date;
}
return new Date(date);
};
var padStart = function padStart(n) {
return (n <= 9 ? '0' : '') + n;
};
/**
* 获取本周一的 0 点时间
*/
var getWeekStart = function getWeekStart() {
var now = new Date();
var day = now.getDay() || 7; // 周日返回 0,修正为 7
now.setHours(0, 0, 0, 0);
now.setDate(now.getDate() - day + 1);
return now;
};
/**
* 获取下周一的 0 点时间
*/
var getNextWeekStart = function getNextWeekStart() {
var weekStart = getWeekStart();
var nextWeek = new Date(weekStart);
nextWeek.setDate(weekStart.getDate() + 7);
return nextWeek;
};
var getFormat = function getFormat(date) {
var now = new Date();
var todayStart = new Date(now.setHours(0, 0, 0, 0));
var yesterdayStart = new Date(todayStart);
yesterdayStart.setDate(todayStart.getDate() - 1);
var weekStart = getWeekStart();
var nextWeekStart = getNextWeekStart();
if (date >= todayStart) {
return 'LT'; // 今天
}
if (date >= yesterdayStart) {
return 'YT'; // 昨天
}
if (date >= weekStart && date < nextWeekStart) {
return 'WT'; // 这周
}
return 'lll';
};
function formatDate(date, locale) {
var $d = parseDate(date);
var format = locale.formats[getFormat($d)];
var dates = {
YYYY: "".concat($d.getFullYear()),
M: "".concat($d.getMonth() + 1),
D: "".concat($d.getDate()),
dddd: locale.weekdays[$d.getDay()],
HH: padStart($d.getHours()),
mm: padStart($d.getMinutes())
};
return format.replace(REGEX_FORMAT, function (match) {
return dates[match];
});
}
export default formatDate;