Skip to main content

Command Palette

Search for a command to run...

Handling utc with dayjs

Published
Handling utc with dayjs

이 포스트에서는 timezone 또는 tzoffset을 활용하여 dayjs 객체를 초기화하는 방법, 그리고 utc_time 문자열과 local_time 문자열로부터 dayjs 객체를 생성하는 방법을 정리한다.

const dayjs = require('dayjs');
const utc = require('dayjs/plugin/utc');
const timezone = require('dayjs/plugin/timezone'); // NOTE: dayjs.tz() 함수를 사용할 때만 필요 
dayjs.extend(utc);
dayjs.extend(timezone);

const tz = "Asia/Seoul";
const tzoffset = 540; // 540 minutes (9 hours)

이후 나오는 모든 code snippet에는 위 코드가 생략되어있다.

Initialize (now)

const deviceLocalTime = dayjs();
const tzoffsetLocalTime = dayjs().utcOffset(tzoffset); // NOTE: utcOffset(tzoffset, true) 가 아님에 유의!
const utcTime = dayjs.utc();

Parsing

utc

const utcTimeString = '2022-12-19 10:00:00';
const dt = dayjs(utcTimeString, { utc: true });
const dt2 = dayjs.utc(utcTimeString); // 둘 다 가능

local

const localTimeString = '2022-12-19 10:00:00';

// timezone을 알고 있는 경우
const dt = dayjs.tz(localTimeString, tz);

// tzoffset을 알고 있는 경우
const dt2 = dayjs(localTimeString).utcOffset(tzoffset, true);

Converting

local -> utc

localDt.utc();

utc -> local

utcDt.local();

Tips

  1. dayjs('...', { utc: true }) 로 생성된 dayjs 객체는 isUTC()를 찍어보면 true가 나온다. 따라서, 이런 객체는 .utc() 를 호출하지 않아도 된다.

    • dayjs.utc('...') 로 생성해도 같은 객체를 얻는다.
  2. dayjs('...', { utc: false }) 또는 dayjs('...')로 생성된 dayjs 객체는 isUTC()를 찍어보면 false가 나온다. 따라서, 이런 객체는 .local()을 호출하지 않아도 된다.

  3. utcTimeString에 1시간을 더한 문자열을 만들고 싶을 때, 굳이 utc: true를 넘기지 않아도 원하는 값을 얻을수 있다. (혼란을 줄 수 있기 때문에 권장되진 않는다.)

    • 정석적인 방법: dayjs.utc(utcTimeString).add(1, 'hour').format('YYYY-MM-DD HH:mm:ss')

    • 간단한 방법: dayjs(utcTimeString).add(1, 'hour').format('YYYY-MM-DD HH:mm:ss')

More from this blog

Auto-Switch iTerm Profiles on SSH Connection

미국에 있는 서버와 한국에 있는 서버는 핑 차이가 크다. 미국서버에 배포하던 서비스를 최근에 한국으로 옮기니, 로컬 개발 터미널인지 라이브인지 구분이 힘들어졌다. 좋은 방법이 없을까 고민하던 차에 내가 발견한 방법을 공유한다. 1/ 프로필을 생성한다. 나는 평소에 밝은 테마(light theme)를 사용하기 때문에 이 프로필은 어두운 테마(dark theme)로 설정했다. 2/ 라이브 환경으로 접속하는 커맨드(e.g. ssh)에 대해 다음과 ...

Nov 23, 2025
Auto-Switch iTerm Profiles on SSH Connection

warp directory `wd`

터미널에서 특히 자주 찾게되는 폴더들이 있다. nvim 설정 디렉토리, 회사 git repo 디렉토리, 개인 git repo 디렉토리 등등. 이런 디렉토리들을 즐겨찾기처럼 등록하고, 즐겨찾기 목록을 볼 수 있고, 즐겨찾기에 등록된 곳을 바로 이동할 수 있게 만들어주는 스크립트가 https://github.com/mfaerevaag/wd 다. 해당 페이지에 있는 Setup 섹션을 참고해서 설치하자. oh-my-zsh의 경우 plugins에 wd...

Oct 18, 2025
warp directory `wd`

macOS에서 키보드로 출력 오디오 장치 바꾸기

최근에 헤드폰을 하나 샀다. 하지만 헤드폰으로 듣다가 밥을 먹을 때는 맥북 스피커로 바꾸고 싶다. 그렇게 출력 장치를 바꿀 때마다 상단의 제어센터 버튼을 눌러서, 오디오 버튼을 누르고, 위 스크린샷에서 원하는 장치를 고르는 것은 매우 귀찮더라. 키보드 “딸깍”으로 오디오 출력 장치를 바꿀 수 있는지 찾아봤고, 그 결과를 공유한다. https://github.com/deweller/switchaudio-osx 를 활용한다. SwitchAudioS...

Sep 12, 2025
macOS에서 키보드로 출력 오디오 장치 바꾸기

토막글 다섯 개 (5)

1. PR Approve에는 장미를 한 송이 🌹 팀원의 풀 리퀘스트를 Approve 할 때, LGTM와 같은 인삿말도 좋지만 나는 장미를 쓴다. 낭만 있고, 메신저에서 PR Approve 구걸을 할 때 장미를 부탁한다고 하거나, 팀원의 Approve 부탁 메세지에 장미 이모지로 답변하기 참 좋아서 애용하고 있다. PR Approve와는 전혀 상관없는 개념이지만 업무에서 자주 쓰이지 않는 심볼이라면 어느 거라도 적당히 재미있어 추천한다. 2. ...

Aug 19, 2025
토막글 다섯 개 (5)

olaf.kr

50 posts

그 날 기분에 따라 반말과 존댓말을 섞어씁니다.