指定された形式の開始および終了時間である15分間隔の丸めパラメータ

指定された形式の開始および終了時間である15分間隔の丸めパラメータ

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

おすすめ記事