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

Unixではこれが有効です:

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はナノ秒が好きではないので削除する必要があります。

おすすめ記事