Files

88 lines
2.7 KiB
JavaScript

class DateUtil {
static formatDateToMonthDay(dateStr) {
const date = DateUtil._parseDate(dateStr);
if (!DateUtil._isValidDate(date)) return '';
return `${date.getMonth() + 1}${date.getDate()}日`;
}
static formatDateToYearMonthDay(dateStr) {
const date = DateUtil._parseDate(dateStr);
if (!DateUtil._isValidDate(date)) return '';
return `${date.getFullYear()}${date.getMonth() + 1}${date.getDate()}日`;
}
static formatDateToYMD(dateStr) {
const date = DateUtil._parseDate(dateStr);
if (!DateUtil._isValidDate(date)) return '';
return [
date.getFullYear(),
String(date.getMonth() + 1).padStart(2, '0'),
String(date.getDate()).padStart(2, '0'),
].join('-');
}
static formatDateTimeToYMDHMS(dateStr) {
const date = DateUtil._parseDate(dateStr);
if (!DateUtil._isValidDate(date)) return '';
return `${DateUtil.formatDateToYMD(date)} ${DateUtil._timeParts(date).join(':')}`;
}
static formatDateTimeToYMDHM(dateStr) {
const date = DateUtil._parseDate(dateStr);
if (!DateUtil._isValidDate(date)) return '';
const [hour, minute] = DateUtil._timeParts(date);
return `${DateUtil.formatDateToYMD(date)} ${hour}:${minute}`;
}
static formatTimeToHMS(dateStr) {
const date = typeof dateStr === 'number' ? new Date(dateStr) : DateUtil._parseDate(dateStr);
if (!DateUtil._isValidDate(date)) return '';
return DateUtil._timeParts(date).join(':');
}
static getCurrentDate() {
return new Date();
}
static isSameDay(date1, date2) {
const d1 = DateUtil._parseDate(date1);
const d2 = DateUtil._parseDate(date2);
if (!DateUtil._isValidDate(d1) || !DateUtil._isValidDate(d2)) return false;
return (
d1.getFullYear() === d2.getFullYear() &&
d1.getMonth() === d2.getMonth() &&
d1.getDate() === d2.getDate()
);
}
static _parseDate(dateStr) {
if (dateStr instanceof Date) return dateStr;
if (typeof dateStr === 'number') return new Date(dateStr);
if (typeof dateStr !== 'string') return null;
const value = dateStr.trim();
if (!value) return null;
if (/^\d{4}-\d{2}-\d{2}$/.test(value)) {
return new Date(value.replace(/-/g, '/'));
}
return new Date(value);
}
static _isValidDate(date) {
return date instanceof Date && !Number.isNaN(date.getTime());
}
static _timeParts(date) {
return [
String(date.getHours()).padStart(2, '0'),
String(date.getMinutes()).padStart(2, '0'),
String(date.getSeconds()).padStart(2, '0'),
];
}
}
if (typeof module !== 'undefined' && module.exports) {
module.exports = DateUtil;
} else if (typeof window !== 'undefined') {
window.DateUtil = DateUtil;
}