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 프로젝트에서 날짜와 시간을 깔끔하게 처리하고 싶다면 여전히 유용한 도구입니다.
'Javascript' 카테고리의 다른 글
Node.js에서 Whisper로 워드 단위 타임스탬프 음성 인식하기 (1) | 2025.04.12 |
---|---|
Node.js에서 .aspx 파일을 읽는 방법: 정적 HTML부터 서버 통합까지 (1) | 2025.04.12 |
브라우저는 HTML을 어떻게 불러올까? DOM 생성부터 페이지 종료까지 전 과정을 알아봅니다 (0) | 2025.04.12 |
Express.js 5.0.0 정식 출시! (1) | 2025.03.31 |
HTTP 캐싱 완전 정복: 웹 성능 향상을 위한 필수 가이드 (0) | 2025.03.29 |