Files
JogyoGaori/src/utils/dateUtils.js
2025-08-07 01:18:49 +09:00

60 lines
2.1 KiB
JavaScript

function addMonthsToDate(dateString, monthsToAdd) {
const date = new Date(dateString);
date.setMonth(date.getMonth() + monthsToAdd);
date.setDate(date.getDate() - 1);
return formatDate(date);
}
function dateFormatter(dateString) {
if (!dateString || !/^\d{4}-\d{2}-\d{2}$/.test(dateString)) return "날짜 형식 오류";
const [year, month, day] = dateString.split('-');
return `${year}${month}${day}`;
}
function calculateDaysFromNow(dateString, now = new Date()) {
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
today.setHours(0,0,0,0);
const inputDate = new Date(dateString);
inputDate.setHours(0,0,0,0);
return Math.ceil((inputDate.getTime() - today.getTime()) / 86400000);
}
function calculateDateDifference(date1Str, date2Str) {
const d1 = new Date(date1Str);
d1.setHours(0, 0, 0, 0);
const d2 = new Date(date2Str);
d2.setHours(0, 0, 0, 0);
return Math.ceil(Math.abs(d2.getTime() - d1.getTime()) / 86400000);
}
function calculateProgress(startDateStr, endDateStr, now = new Date()) {
const start = new Date(startDateStr);
start.setHours(0, 0, 0, 0);
const end = new Date(endDateStr);
end.setHours(0, 0, 0, 0);
const currentTime = now.getTime();
if (start.getTime() >= end.getTime() || currentTime >= end.getTime()) return '100.0000000';
if (currentTime <= start.getTime()) return 0;
return Math.max(0, Math.min(100, ((currentTime - start.getTime()) / (end.getTime() - start.getTime())) * 100));
}
function calculateMonthDifference(sYear, sMonth, eYear, eMonth) {
return (Number(eYear) - Number(sYear)) * 12 + (Number(eMonth) - Number(sMonth));
}
function formatDate(date) {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
module.exports = {
addMonthsToDate,
dateFormatter,
calculateDaysFromNow,
calculateDateDifference,
calculateProgress,
calculateMonthDifference,
formatDate
};