Examples

MacOS

 # 현재 날짜, 시간
date

 # UTC 현재 날짜, 시간
date -u

 # 현재 날짜, 시간 포매팅
date '+%Y-%m-%d %H:%M:%S %a %Z'

 # UTC 현재 날짜, 시간 포매팅
date -u '+%Y-%m-%d %H:%M:%S %a %Z'

 # 오늘은 1년 중 몇 번째 주(week)인가?
date +%V

 # 현재의 unix timestamp를 출력
date +%s

 # unix timestamp를 읽기 쉬운 날짜로 변환
date -r 1572511074

 # yyyy-MM-dd 형식의 날짜를 timestamp로 변환
date -jf %Y-%m-%d "2022-03-09" +%s

 # 두 날짜 사이의 일수를 구하기
from_time=$(date -jf %Y-%m-%d "2022-03-09" +%s)
to_time=$(date -jf %Y-%m-%d "2022-03-07" +%s)
echo $(((from_time - to_time) / 86400))         # 결과는 2

GNU

GNU date는 MacOS의 date보다 더 많은 기능을 제공한다.

mac에서 GNU date를 사용하려면 coreutils를 설치하면 된다.

brew install coreutils
$ # 날짜를 unixtimestamp로 변환
$ gdate --date="0001-01-01T00:00:00Z" +%s
-62135596800

$ gdate --date="1970-01-01T00:00:00Z" +%s
0

$ gdate --date="2022-01-01T00:00:00Z+0000" +%s
1640995200

$ gdate --date="2022-01-01T00:00:00Z+0900" +%s
1640962800

$ # unixtimestamp를 날짜로 변환
$ gdate -d @1640995200 +"%F %T %z"
2022-01-01 09:00:00 +0900

$ gdate -d @1640995200 +"%F %T %z" --utc
2022-01-01 00:00:00 +0000

Format

  • 명령어 예제를 실행한 결과의 기준은 2018년 8월 3일 금요일 05시 49분 37초.
포맷 옵션 설명 명령어 예제 실행 결과
% % date +% %
%n \n date +%n 공백 라인이 출력된다.
%t \t date +%n 탭 문자가 출력된다.
%s epoch 타임 date +%s 1533242977
%Y 4자리 년도 date +%Y 2018
%y 2자리 년도 date +%y 18
%A 요일 이름(locale) date +%A 금요일
%a 요일 이름(locale) date +%a
%B 월 이름(locale) date +%B 8월
%b 월 이름(locale) date +%b 8
%m 월(01 ~ 12) date +%m 08
%c 날짜 및 시간(locale) date +%c 금 8/ 3 05:49:37 2018
%d Month 날짜(01 ~ 31) date +%d 03
%j Year 날짜(001 ~ 366) date +%j 215
%w 요일 숫자(0: 일요일) date +%w 5
%H 시간(00 ~ 23) date +%H 05
%M 분(00 ~ 59) date +%M 49
%S 초(00 ~ 59) date +%S 37
%V week 숫자 date +%V 31
%Z 타임존 date +%Z KST

나노초 출력

macOS의 빌트인 date 명령어는 나노초를 지원하지 않는다.

그러나 GNU date는 나노초를 출력할 수 있다.

$ date +'%Y-%m-%d %H:%M:%S.%N'
2024-07-17 22:51:51.N
$ gdate +'%Y-%m-%d %H:%M:%S.%N'
2024-07-17 22:51:53.317486000

타임존

현재 타임존 확인

/etc/localtime가 어느 파일에 대한 심볼릭 링크인지 확인하면 현재 타임존을 알 수 있다.

$ readlink /etc/localtime
/var/db/timezone/zoneinfo/Asia/Seoul

물론 [[/cmd/ls]]{ls -l} 로도 확인할 수 있다.

$ ls -l /etc/localtime
lrwxr-xr-x 1 root wheel 36 2024-08-17 Sat 11:11:03 /etc/localtime -> /var/db/timezone/zoneinfo/Asia/Seoul

타임존에 따른 날짜시간 출력

TZ 환경변수에 타임존을 입력하는 방식으로 특정 타임존의 날짜시간을 출력할 수 있다.

$ TZ="Asia/Seoul" date ; TZ="Asia/Singapore" date ; TZ="Asia/Tokyo" date
Thu Sep 19 22:39:24 KST 2024
Thu Sep 19 21:39:24 +08 2024
Thu Sep 19 22:39:24 JST 2024

TZ에 입력할 수 있는 타임존 이름은 /usr/share/zoneinfo/zone.tab 파일에서 확인하면 된다.

참고문헌