Javaプログラムを呼び出すシェルスクリプトにパラメータを渡したいです。
たとえば、現在時刻が2011:02:23 01:05の場合、最も近い合計時間に移動する必要があります。たとえば、1:00 (Java プログラムの開始時間パラメーター) の場合 1:05 および 1 の場合: 15 (java プログラムの終了時間パラメーター)) 次のタイムスタンプは、現在時刻に基づいて Java プログラムに動的に渡したいです。
シェルスクリプトを介して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