JavaScript로 방금 전, 몇 분 전, 몇 시간 전 형식으로 표시하는 법

지은·2023년 3월 24일
4

🌴 모동숲 마켓

목록 보기
1/9
post-thumbnail
post-custom-banner

솔로 프로젝트에서 게시판에서 게시글이 올라온 시간을 "n분 전" 이런 식으로 나타내고 싶어서 현재 시간을 기준으로 얼마나 지났는지 구해주는 함수를 만들었다.

const elapsedTime = (date: number): string => {
	const start = new Date(date);
	const end = new Date();

	const seconds = Math.floor((end.getTime() - start.getTime()) / 1000);
	if (seconds < 60) return '방금 전';

	const minutes = seconds / 60;
	if (minutes < 60) return `${Math.floor(minutes)}분 전`;

	const hours = minutes / 60;
	if (hours < 24) return `${Math.floor(hours)}시간 전`;

	const days = hours / 24;
	if (days < 7) return `${Math.floor(days)}일 전`;

	return `${start.toLocaleDateString()}`;
};
  1. 이때 date에 들어가는 값은 숫자로 이루어진 timestamp이다.
    1679652249193
  2. timestamp를 new Date()에 넣으면 읽을 수 있는 시간과 날짜로 변환할 수 있다.
    Fri Mar 24 2023 19:04:09 GMT+0900 (한국 표준시)
  3. 이 형식에 getTime() 메소드를 쓰면 다시 timestamp로 변환할 수 있다.
  4. timestamp 끼리 빼준다. (현재 - 과거)
    12518739
  5. 단위가 밀리초이기 때문에 1000으로 나눠주면 초 단위로 바꿀 수 있다. Math.floor()를 이용해 내림처리해준다.
    12518
  6. if문을 지날 때마다 단위를 초 → 분 → 시간 → 일로 바꿔주면 된다.
    12518초 전 → 208분 전 → 3시간 전
  7. 7일 이상이 지난 게시물은 그냥 2023.03.24 이렇게 표시하도록 마지막에 리턴문을 작성해준다.

짠.. 결과물이다 🤓

profile
블로그 이전 -> https://janechun.tistory.com
post-custom-banner

7개의 댓글

comment-user-thumbnail
2023년 3월 25일

솔로 프로젝트 화이팅입니다 ~~!

답글 달기
comment-user-thumbnail
2023년 3월 26일

직접 구현 하신건가요 ? 완전 멋집니다

1개의 답글
comment-user-thumbnail
2023년 3월 26일

담에 사용할 때 참고하러 오겠슴돠 @

답글 달기
comment-user-thumbnail
2023년 3월 26일

오 좋은데요? 순서대로 조건도 거르니 분, 시간, 일자 순으로 가니 좋은 거 같네요! 나중에 참고 하겠습니다

답글 달기
comment-user-thumbnail
2023년 3월 26일

와. 라이브러리만 사용했지 이걸 직접 구현할 생각은 못했는데 대단합니다!

답글 달기
comment-user-thumbnail
2023년 3월 26일

와우 이거 완전 꿀인데요! 감사합니다

답글 달기