Javascript

Node.js에서 Moment.js로 타임스탬프 다루기 완전 정복

드리프트2 2025. 4. 12. 11:33

 

Node.js에서 Moment.js로 타임스탬프 다루기 완전 정복

 

날짜와 시간을 코드로 다뤄야 할 일이 생겼을 때, 누구나 한 번쯤 머리가 복잡해진 경험이 있을 텐데요.

 

특히 Node.js 환경에서 타임스탬프를 정확하게 가져오거나 포맷팅해야 할 때는 더 그렇습니다.

 

이럴 때 유용하게 사용할 수 있는 라이브러리가 바로 Moment.js(모먼트JS) 인데요.

 

이 글에서는 Moment.js를 사용해서 Node.js에서 타임스탬프를 가져오고, 변환하고, 포맷팅하는 법을 단계별로 알아보겠습니다.


1. Moment.js는 어떤 라이브러리인가요?

Moment.js는 자바스크립트 기반의 날짜/시간 처리 라이브러리입니다.

 

복잡한 날짜 계산이나 포맷팅 작업을 간단하게 처리할 수 있도록 도와주는데요.

 

특히 Node.js와 잘 어울려서 서버 사이드 애플리케이션에서도 많이 사용됩니다.

 

주요 기능은 다음과 같습니다:

  • 현재 시간의 타임스탬프 가져오기
  • 유닉스 타임스탬프(초, 밀리초) 지원
  • 날짜 포맷 변환
  • 날짜 계산 (더하기, 빼기, 차이 계산 등)
  • 타임존 지원 (확장 기능 사용 시)

2. Moment.js 설치하기

먼저 Node.js가 설치되어 있어야 합니다.

 

없다면 Node.js 공식 홈페이지에서 설치할 수 있습니다.

 

그다음, 터미널에서 아래 명령어로 Moment.js를 설치합니다:

npm install moment

 

설치가 완료되면 이제 프로젝트에서 자유롭게 사용할 수 있습니다.


3. 코드에 Moment.js 불러오기

작성 중인 Node.js 파일의 상단에 다음과 같이 require 구문을 추가합니다:

const moment = require('moment');

 

이제 moment 객체를 통해 다양한 날짜 관련 기능을 사용할 수 있습니다.


4. 현재 타임스탬프 가져오기

4-1. 초 단위 타임스탬프 (Unix Timestamp)

Unix 타임스탬프란 1970년 1월 1일 0시 0분 0초부터 지금까지 흐른 초 또는 밀리초 단위의 시간을 의미합니다.

const timestampInSeconds = moment().unix();
console.log('초 단위 타임스탬프:', timestampInSeconds);

4-2. 밀리초 단위 타임스탬프

const timestampInMilliseconds = moment().valueOf();
console.log('밀리초 단위 타임스탬프:', timestampInMilliseconds);

 

초 단위는 DB 저장이나 로그 기록에 자주 쓰이고, 밀리초 단위는 정밀한 시간 계산이나 시간 차 측정에 유용합니다.


5. 타임스탬프 포맷팅하기

날짜를 사람이 읽을 수 있는 형태로 변환하고 싶다면 format() 메서드를 사용하면 됩니다.

5-1. 현재 날짜 포맷팅

const formattedDate = moment().format('YYYY-MM-DD HH:mm:ss');
console.log('포맷된 현재 날짜:', formattedDate);

 

출력 예시: 2025-04-12 14:30:45

5-2. 특정 타임스탬프 포맷팅

유닉스 타임스탬프를 날짜로 변환할 수도 있습니다:

const unixTimestamp = 1672531200; // 예시 타임스탬프
const formattedFromTimestamp = moment.unix(unixTimestamp).format('YYYY-MM-DD HH:mm:ss');
console.log('타임스탬프 기반 날짜:', formattedFromTimestamp);

6. Moment.js의 추가 기능 알아보기

Moment.js는 단순히 날짜를 출력하는 것 외에도 다양한 날짜 관련 기능을 제공합니다.

6-1. 날짜 계산

예를 들어, 오늘 기준으로 7일 뒤의 날짜를 알고 싶다면:

const nextWeek = moment().add(7, 'days').format('YYYY-MM-DD');
console.log('7일 뒤 날짜:', nextWeek);

6-2. 상대 시간 표현

몇 시간 전, 며칠 후 같은 표현도 할 수 있습니다:

const twoHoursAgo = moment().subtract(2, 'hours').fromNow();
console.log('2시간 전:', twoHoursAgo); // 출력: "2시간 전"

6-3. 타임존 지원

Moment.js는 moment-timezone 확장 라이브러리를 통해 타임존 기능도 지원합니다. 예를 들어, 뉴욕 시간으로 현재 시간을 출력하고 싶다면:

const moment = require('moment-timezone');
const newYorkTime = moment().tz('America/New_York').format('YYYY-MM-DD HH:mm:ss');
console.log('뉴욕 시간:', newYorkTime);

7. Moment.js의 대안도 있을까요?

사실 Moment.js는 현재 레거시(legacy) 라이브러리로 간주되고 있습니다.

 

공식 문서에서도 새로운 프로젝트에서는 다음과 같은 대안을 고려할 것을 권장하고 있는데요:

  • Day.js: Moment.js와 API가 거의 동일하지만 훨씬 가볍고 빠릅니다.
  • Luxon: Intl API 기반으로 타임존과 로컬 시간 지원이 강력합니다.
  • date-fns: 함수형 스타일의 날짜 처리 라이브러리로, 트리 쉐이킹(tree shaking)이 잘 됩니다.

하지만 기존 프로젝트에 이미 Moment.js가 사용되고 있고, 복잡하지 않은 날짜 처리를 하고 있다면 계속 사용하는 데 큰 문제는 없습니다.


8. 마무리하며

지금까지 Node.js에서 Moment.js를 사용해 타임스탬프를 다루는 방법을 하나씩 살펴봤습니다. 핵심은 다음과 같습니다:

  • moment().unix()로 초 단위 타임스탬프 가져오기
  • moment().valueOf()로 밀리초 단위 타임스탬프 얻기
  • format()으로 읽기 쉬운 날짜 문자열로 변환
  • 날짜 계산, 상대 시간, 타임존 기능도 가능

Moment.js는 간단한 사용법에 비해 강력한 기능을 제공하는데요.

 

Node.js 프로젝트에서 날짜와 시간을 깔끔하게 처리하고 싶다면 여전히 유용한 도구입니다.