与えられた時間値の将来の時間を取得するUnix / Linuxコマンド

与えられた時間値の将来の時間を取得するUnix / Linuxコマンド

次のコマンドを使用して30分前の時間を見つけましたが、30分を追加するコマンドを作成することはできません。

入力構造の例。

dateinput=20181214202959
inputTime=$(echo $dateinput | sed 's,\(.\{4\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\),\1-\2-\3 \4:\5:,')
param2=`date '+%Y%m%d%H%M%S' --date="$inputTime 30 minutes ago"`
echo $param2
20181214195959

上記と同様に、30分を追加する手順を教えてください。上記のサンプル日付入力の場合、希望の出力は20181214205959です。

直接日付コマンドを使用すると、以下の要件に従って加算および減算することができます。

$date
Tue Dec 18 20:49:06 PST 2018
$date --date "-30 minutes"
Tue Dec 18 20:18:55 PST 2018
$date --date "+30 minutes"
Tue Dec 18 21:19:01 PST 2018

しかし、私の要件は、20181214202959などのYYYYMMDDhhmmss形式で提供される入力から日付を取得することです。これが私が直面した問題です。 「30分前」コマンドを使用して時間を短縮する機能がありますが、特定の時間の将来の値を取得することはできません。

ベストアンサー1

あなたのコード dateinput=20181214202959 inputTime=$(echo $dateinput | sed 's,\(.\{4\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)\(.\{2\}\),\1-\2-\3 \4:\5:,')

inputTimeに設定するには、dateinputに間隔を追加します2018-12-14 20:59:39

date --date="2018-12-14 20:59:59 30 minutes ago"その後、特定の出力形式の要求を実行します。

リクエストから削除すると、ago次の30分間リクエストが届きます。この単語の目的agoは、最新の時間オフセットを無効にすることです。通常、複数の時間オフセットを一覧表示して合計することができます。たとえば、分と週を組み合わせることができます。

$ date  --date="2018-12-14 20:00:00 30 minutes ago 1 week"
Fri Dec 21 19:30:00 PST 2018
$ date  --date="2018-12-14 20:00:00 30 minutes 1 week"
Fri Dec 21 20:30:00 PST 2018
$ date  --date="2018-12-14 20:00:00 30 minutes 1 week ago"
Fri Dec  7 20:30:00 PST 2018

おすすめ記事