首页 > 解决方案 > 在 YYYY-MM-DDTHH:MM:SS.SSSZ Bash 脚本中增加分钟数

问题描述

我无法弄清楚我在哪里犯了错误。以下以指定格式添加分钟到日期的语法是否正确

        startDate=2018-05-01
        sDate=$(date -d "$startDate" '+%Y-%m-%dT%H:%M:%S.%3NZ' )
        offset=5
        midDate=${sDate}
        echo 'mid Date before operation' ${midDate}
        midDate=$(date -d "${midDate:0:4}-${midDate:5:2}-${midDate:8:2}T${midDate:11:2}:${midDate:14:2}:${midDate:17:2}.${midDate:20:3}  +  ${offset} minutes "  '+%Y-%m-%dT%H:%M:%S.%3NZ' )
        echo 'mid Date after operation' ${midDate}

输出

$bash -f main.sh
mid Date before operation 2018-05-01T00:00:00.000Z
mid Date after operation 2018-04-30T19:01:00.000Z

标签: bashshell

解决方案


尝试使用 Unix 时间,例如

#!/bin/sh
start_date=2018-05-01
offset_mins=5
start_unix=$(date -d "${start_date}" +%s)
end_unix=$((start_unix + 60*offset_mins))
end_date=$(date -d "@${end_unix}" '+%Y-%m-%dT%H:%M:%S.%3NZ')
printf "%s" ${end_date}

推荐阅读