본문 바로가기
카테고리 없음

[Bash] date 명령 - 과거와 미래 날짜, 시간 구하는 방법

by 꼬마낙타 2019. 7. 23.
반응형

Bash 스크립트를 작성하다보면 시간 포맷을 명령어의 인자로 입력해야하는 경우가 있다. 이 때, 특정 시간이 아닌 현재 시간을 기준으로 몇 분전이나 몇 분후를 입력하고 싶은 경우가 있다.

 

시스템 시간 정보를 얻어 올 수 있는 date 명령어의 옵션을 이용하면 쉽게 과거와 미래시간을 계산해 올 수 있다.

 

리눅스에서 Date 사용

리눅스의 경우 다음과 같이 date명령의 -d 옵션을 이용하여 과거 시간을 가져올 수 있다.

date -d 'yesterday'		# 어제
date -d '1 day ago'		# 1일전
date -d '1 week ago'		# 1주일전
date -d '1 month ago'		# 1달전
date -d '1 year ago'		# 1년전
date -d '10 second ago'		# 10초전
date -d '10 minute ago'		# 10분전
date -d '10 hour ago'		# 10시간전
date -d '1 year 2 month ago'	# 1년 2개월전

미래시간은 과거시간에서 'ago'를 빼면 된다.

date -d 'tomorrow'		# 어제
date -d '1 day'		        # 1일후
date -d '1 week'		# 1주일후
date -d '1 month'		# 1달후
date -d '1 year'		# 1년후
date -d '10 second'		# 10초후
date -d '10 minute'		# 10분후
date -d '10 hour'		# 10시간후
date -d '1 year 2 month'	# 1년 2개월후

요일을 기준으로 명시할 수도 있다. 

date -d 'this mondy'    # 이번주 월요일
date -d 'next tuesday'  # 다음 화요일

시간의 단위를 나타내는 day, week, month 등은 복수형을 사용해도되고 단수형을 사용해도 된다. 손가는대로 사용하면 된다.

 

시간의 포맷팅을 하고 싶은 경우가 있다. 예를 들어, 201907232311 같은 형식으로 시간을 출력하고 싶으면 다음과 같이 입력하면 된다.

date '+%Y%m%d%H%M%S' -d '5 minutes ago'

위와 같이 입력하면 5분전 시간을 초단위가지 쭉 이어서 출력하게 된다.

 

START_TIME과 END_TIME을 입력해야하는 명령어가 있다면,

START_TIME=$(date '+%Y%m%d%H%M%S' -d '5 minutes ago')
END_TIME=$(date '+%Y%m%d%H%M%S')

이와 같이 입력해주면 5분전부터 현재까지의 시간을 START_TIME, END_TIME 변수에 설정할 수 있다. 

 

macOS에서 date 사용

macOS에서 date 명령어에 -d 옵션이 적용되지 않는 경우가 있다. macOS에서는 다음과 같이 사용하면 된다.

date -v -1d

-v 옵션에 -1d 를 주면 하루 전, 어제 날짜를 가져오게 된다.

 

이 결과를 포맷팅하고 싶으면

date -v -1d '+%Y%m%d%H%M%S'

이렇게 입력하면 된다.

 

-1d 대신 -1M을 입력하면 한달전, -1H를 입력하면 한시간전이 된다. 결과 포맷팅에 사용되는 문자의 시맨틱이 적용된다.

 

 

반응형

댓글