次の日付文字列が提供されます: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はナノ秒が好きではないので削除する必要があります。