날짜 다루기

김수정·2020년 4월 22일
0

js 데이터 다루기

목록 보기
4/6

n일 전이 몇일인지 구하기

메서드를 활용한 방법

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)) );
profile
정리하는 개발자

0개의 댓글