fed*_*qui 32
只需使用-d
(或--date
)对日期进行一些数学运算:
date -d '+1 hour' '+%F %T'
# ^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
例如:
$ date '+%F %T'
2013-04-22 10:57:24
$ date -d '+1 hour' '+%F %T'
2013-04-22 11:57:24
# ^
Run Code Online (Sandbox Code Playgroud)
Sak*_*vel 10
在shell脚本中,如果我们需要添加时间,则使用下面的命令和日期格式(在日期字符串之前放置时间)
date -d"11:15:10 2017-02-05 +2 hours" +"%Y-%m-%d %H:%M:%S"
这将输出
2017-02-05 13:15:10
这不会导致没有UTC的正确日期它不起作用
如果您需要编写同时在 Linux 服务器和 macOS 工作站上运行的脚本,您可以消除第一个调用的错误,并将其与另一个调用进行date
“或”( )。||
哪个先出现并不重要。
date -u -d "+${max_age}Seconds" +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || \
date -u -v "+${max_age}S" +"%Y-%m-%dT%H:%M:%SZ"
Run Code Online (Sandbox Code Playgroud)
例如,此 bash 函数将文件上传到 AWS S3 并设置Expires:
和Cache-Control:
标头。
s3_upload_cache_control(){
local max_age_seconds="${1}" ;shift # required
local bucket_path="${1}" ;shift # required
local filename="${1}" ;shift # required
local remote_filename="/${1:-${filename}}" # optional
local fmt="+%Y-%m-%dT%H:%M:%SZ"
aws s3 cp \
"${filename}" \
"s3://${bucket_path}${remote_filename}" \
--expires "$( \
date -u -d "+${max_age_seconds}Seconds" $fmt 2>/dev/null || \
date -u -v "+${max_age_seconds}S" $fmt )" \
--cache-control max-age=$max_age,public \
--acl public-read
}
Run Code Online (Sandbox Code Playgroud)
对我来说,添加加号+
只是让它认为我想使用时区。
所以
date -d "2021-03-16 00:00:00 +3 minutes" +'%H:%M'
Run Code Online (Sandbox Code Playgroud)
回来了23:01
,这很奇怪..
但我省略了加号,只需这样做:
date -d "2021-03-16 00:00:00 1 hour" +'%H:%M'
Run Code Online (Sandbox Code Playgroud)
然后返回01:00
.