Bash에서 원하는 날짜에 X시간을 추가해 보세요.

Bash에서 원하는 날짜에 X시간을 추가해 보세요.

다음과 같은 날짜 문자열이 제공됩니다: 2022-03-28T23:40:49.721Z

X시간을 추가하려고 합니다.

기능은 다음과 비슷해 보입니다.

addHours()
{
   dateString=$1 
   hours=$2

   return date -d 'dateString + $hours hours' +'%Y-%m-%dT%H:%M:%S.%NZ'
}

내 문제는 "T"가 문제를 일으키고 잘못된 날짜 구조가 계속 표시된다는 것입니다.

답변1

유닉스에서는 이것이 유효합니다:

date -d '2022-03-28T23:40:49.721Z +6 hours' +'%Y:%m:%dT%H:%M:%S.%NZ' 

하지만 Mac에서는 타임스탬프로 변환하고 계산을 수행한 다음 다시 변환해야 합니다.

dateFormatter() 
{
    date -jf "%s" $1 +"%Y-%m-%dT%H:%M:%SZ"
}

dateAddTime()
{
    ds=$1
    echo $ds
    # remove nano seconds
    ds=`echo "${ds/\.[0-9][0-9][0-9]/}"`
    
    #convert to timestamp
    ts=`date -jf %Y-%m-%dT%H:%M:%SZ $ds  +%s`

    #time in hours
    seconds=$2*60*60
    
    
    dateFormatter $(($ts + $seconds))
}

#add 6 hours
dateAddTime 2022-03-28T23:40:49.721Z 6 

참고: MacOS는 나노초를 좋아하지 않으므로 제거해야 합니다.

관련 정보