주어진 시간 값에 대해 미래 시간을 가져오는 Unix/Linux 명령

주어진 시간 값에 대해 미래 시간을 가져오는 Unix/Linux 명령

다음 명령을 사용하여 30분 전 시간을 찾았지만 30분을 추가하는 명령을 작성할 수 없습니다.

입력 구조의 예.

dateinput=20181214202959
inputTime=$(echo $dateinput | sed 's,\(.\{4\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\),\1-\2-\3 \4:\5:,')
param2=`date '+%Y%m%d%H%M%S' --date="$inputTime 30 minutes ago"`
echo $param2
20181214195959

위와 비슷하게 30분을 추가하는 단계를 알려주세요. 위에 제공된 예제 날짜 입력의 경우 원하는 출력은 20181214205959입니다.

직접 날짜 명령을 사용하면 아래 요구 사항에 따라 더하고 뺄 수 있습니다.

$date
Tue Dec 18 20:49:06 PST 2018
$date --date "-30 minutes"
Tue Dec 18 20:18:55 PST 2018
$date --date "+30 minutes"
Tue Dec 18 21:19:01 PST 2018

하지만 내 요구 사항은 20181214202959와 같은 YYYYMMDDhhmmss 형식으로 제공되는 입력에서 날짜를 가져오는 것입니다. 이것이 내가 직면한 문제입니다. "30분 전" 명령을 사용하여 시간을 줄이는 기능이 있지만 주어진 시간에 대한 미래 값을 얻을 수는 없습니다.

답변1

당신의 코드 dateinput=20181214202959 inputTime=$(echo $dateinput | sed 's,\(.\{4\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\),\1-\2-\3 \4:\5:,')

inputTime로 설정하려면 dateinput에 간격을 추가하세요 2018-12-14 20:59:39.

date --date="2018-12-14 20:59:59 30 minutes ago"그런 다음 특정 출력 형식에 대한 요청을 실행합니다 .

요청에서 삭제하면 ago다음 30분 동안 요청을 받게 됩니다. 이 단어의 목적 ago은 가장 최근의 시간 오프셋을 무효화하는 것입니다. 일반적으로 여러 시간 오프셋을 나열하고 모두 합산할 수 있으므로 예를 들어 분과 주를 결합할 수 있습니다.

$ date  --date="2018-12-14 20:00:00 30 minutes ago 1 week"
Fri Dec 21 19:30:00 PST 2018
$ date  --date="2018-12-14 20:00:00 30 minutes 1 week"
Fri Dec 21 20:30:00 PST 2018
$ date  --date="2018-12-14 20:00:00 30 minutes 1 week ago"
Fri Dec  7 20:30:00 PST 2018

관련 정보