메서드를 활용한 방법
function getDateAgo(date, days) {
let dateCopy = new Date(date);
dateCopy.setDate(date.getDate() - days);
return dateCopy.getDate();
}
밀리초로 계산하는 방법
function getDateAgo(date, days) {
const _date = Number(date);
const dayAgoTime = days * 24 * 3600 * 1000;
return new Date(_date - dayAgoTime).getDate();
}
function formatDate(date) {
let diff = new Date() - date; // 차이(ms)
if (diff < 1000) { // 차이가 1초 미만이라면
return '현재';
}
let sec = Math.floor(diff / 1000); // 차이를 초로 변환
if (sec < 60) {
return sec + '초 전';
}
let min = Math.floor(diff / 60000); // 차이를 분으로 변환
if (min < 60) {
return min + '분 전';
}
// 날짜의 포맷을 변경
// 일, 월, 시, 분이 숫자 하나로 구성되어있는 경우, 앞에 0을 추가해줌
let d = date;
d = [
'0' + d.getDate(),
'0' + (d.getMonth() + 1),
'' + d.getFullYear(),
'0' + d.getHours(),
'0' + d.getMinutes()
].map(component => component.slice(-2)); // 모든 컴포넌트의 마지막 숫자 2개를 가져옴
// 컴포넌트를 조합
return d.slice(0, 3).join('.') + ' ' + d.slice(3).join(':');
}
alert( formatDate(new Date(new Date - 1)) ); // "현재"
alert( formatDate(new Date(new Date - 30 * 1000)) ); // "30초 전"
alert( formatDate(new Date(new Date - 5 * 60 * 1000)) ); // "5분 전"
// 어제의 날짜를 "DD.MM.YY HH:mm"형식("일.월.연 시:분") 형태로 출력
alert( formatDate(new Date(new Date - 86400 * 1000)) );