给定这样的日期字符串: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 不喜欢纳秒,因此必须将其删除。