我想在调用java程序的shell脚本中传递参数...
例如,当前时间是 2011:02:23 01:05 那么我需要向下移动到最近的整个时间,例如 1:00(java 程序的开始时间参数),如果它是 1:05 和 1:15(java 程序的结束时间参数) )下面的时间戳我想根据当前时间动态传递给java程序。
通过 shell 脚本传递给 java 程序的示例参数(15 分钟间隔)。
java 2011:02:23 01:00(开始时间) 2011.02.23 01:15(结束时间)
java 2011.02.23 01:15(开始时间) 2011.02.23 01:30(结束时间)
我可以吗?或者有没有办法在 unix 中生成上述指定格式的日期和时间?
注意:这个日期:获取当前 15 分钟间隔不符合我的目的。
答案1
您可以使用以下命令获取比当前分钟数(或第一个参数中给出的分钟数)低 15 倍的分钟数:
a=$(date date -d "2011-02-23 01:05" +%-m) # need only minutes.
a=${1:-"$a"} # or use the value from the first parameter.
a=${a#0} # remove one optional leading zero to
# avoid issues with 08 and 09.
b=$((a-a%15)) # Round down to a 15 minutes multiple.
c=$((b+15)) # end time
echo "$b $c"
如果您需要完整的日期字符串,请使用:
$ printf 'java %s%02d\n' "$(date -d "2011-02-23 01:05" +"%Y:%m:%d %H:")" "$b"
java 2011:02:23 01:00
或者,在 bash 中:
$ printf -v a '%(%s)T\n' -1
$ printf '%(java %Y-%m-%d %H:%M:%S)T\n' "$(( a - a % (60*15) ))"
java 2018-08-30 22:45:00