안녕하세요. 이번 시간에는 우분투에서 현재 시각을 어떻게 출력하는지에 대해 간단하게 알아보겠습니다.

 


 먼저, date는 시스템 date를 출력하거나, 혹은 셋팅하는 명령입니다. 이번 시간에는 date를 단지, 시스템 시각만 출력하는 용도로 쓸 거에요.

 

 

 쓰는 방법이 나와 있는데요. 여기서 OPTION은 일절 쓰지 않고, +FORMAT만 쓸 겁니다.

 


 먼저, 1970년 1월 1일 0시 0분 0초 UTC로부터 경과된 초를 출력하고 싶습니다.

 

 

 %s 옵션을 쓰시면 됩니다. 해당 옵션이 seconds since 1970-01-01 00:00:00 UTC라고 되어 있는 걸 보아서는 제가 원하는 목적과 맞아 보입니다. date +%s를 입력해 볼까요?

 

 

 그러면 1665294580이 나옵니다. 이는 1970년 1월 1일 0시 0분 0초 UTC로부터 16억 6529만 4580초만큼 지났다는 의미입니다. 이제, 서버의 현재 시각을 제가 출제한 문제에서 많이 나온 포맷인 YYYY-MM-DD hh:mm:ss 형식으로 출력하고 싶습니다.

 

 

 %F는 full date를 의미합니다. %+4Y-%m-%d와 같다고 되어 있습니다. YYYY-MM-DD를 의미합니다.

 

 

 다음에 %T는 time을 의미하는데요. %H:%M:%S와 같다 되어 있어요. 그래서 "%F %T"를 입력하면 현재 서버 시각을 제가 요구하는 포맷인 YYYY-MM-DD hh:mm:ss로 출력하게 됩니다.

 

 

 현재 제 서버의 시각은 2022년 10월 09일 14시 54분 41초라네요. 그런데, 시각을 다뤄보신 분은 아시겠지만, timezone도 상당히 중요합니다. 해당 시간이 로스엔젤레스의 시간인지, 런던의 시간인지, 아니면 도쿄나 서울의 시간인지 모르기 때문입니다. 당연한 이야기입니다. 저는 그래서, +hh:mm 형식으로 time zone에 대한 정보도 같이 추가하고 싶습니다.

 

 

 그러면 %z로 출력해 주면 됩니다. %:z는 +hh:mm꼴로 출력해 주는 것이니, timezone과 관련된 정보를 조금 더 예쁘게 출력하려면 %:z 정도도 나쁘지 않겠습니다.

 

 date +"%F %T%:z"로 출력해 볼까요? 그러면 현재 2022-10-09 14:56:04임을 알 수 있어요. 뒤에 +09:00가 붙었는데요. UTC 시간대에 비해 9시간이 빠른 타임존임을 알 수 있습니다. 저는 서울 타임존을 쓰고 있기 때문입니다.

 

 


 현재 시간을 뉴욕 시간으로 출력하는 방법이 있을까요? man 페이지를 보면 위와 같은 방법을 소개해 주고 있는데요. 아마도, TZ라는 변수를 정의한 다음에, date 명령어를 적용하라는 듯 합니다.

 

 TZ="America/New_York" date +"%F %T%z"를 입력해 봅시다. 그러면, 2022년 10월 9일 새벽 2시 1분 34초 -04:00이 나옵니다. 우리보다 13시간이 느리다는 것을 알 수 있어요. 다시, date 명령어를 입력해 봅시다. 그러면, 15시 1분 48초라는 시간이 나오게 됩니다.