정보/프로그래밍

리눅스 쉘 스크립트 시간 유효성 체크 / 시간 계산하기 / bash validate timestamp/ convert timestamp to date

아로구스 2021. 4. 9. 19:30

쉘에서 날짜를 여러방식으로 사용하는데요 입력받은 날짜가 원하는 포맷에 유효한지 체크하고 플러스 원하는 시간만큼 과거나 미래로 이동하여 계산하는 방식을 정리했습니다.

저도 가끔 사용하는데 매번 까먹어서 정리했습니다.

 

date 실행 시 날짜 형식을 "YYYY-mm-dd HH:MM:SS" 으로 해줘야 합니다.

 

YYYYmmddHHMMSS로 입력한 날짜가 유효한 날짜인지 체크 하는 방법입니다.

function is_valid_time() {
	# https://arogoose.tistory.com/
	a=$1
	b="${a:0:4}-${a:4:2}-${a:6:2} ${a:8:2}:${a:10:2}:${a:12:2}"
	c=`date -d "${b}"`
	return $?
}

a=$1
is_valid_time $a || { echo "invalid"; exit 1; }
date: invalid date `2021-04-09 19:18:99'

입력한 날짜에서 원하는 시간만큼 변화 후 타임스탭프 포맷으로 출력 구하는 방법입니다.

+%Y%m%d%H%M%S를 적절하게 원하는 방식으로 세팅하면 됩니다.

function is_valid_time() {
	#https://arogoose.tistory.com/
	a=$1
	b="${a:0:4}-${a:4:2}-${a:6:2} ${a:8:2}:${a:10:2}:${a:12:2}"
	c=`date -d "${b} 1 hours ago" +%Y%m%d%H%M%S`
	echo $c
	return $?
}

1 hours ago (한시간 과거) / 10 minutes (10분 후) / 3 months ago (3개월 전) / 1 year (1년 후)

bash

반응형