ksh - 現在時刻から5分を減算します。

ksh - 現在時刻から5分を減算します。

コマンドの日付と時刻から5分を引いた値を取得する必要がありますdate

date:
29 Aug 2018 21:56:01

result:
29 Aug 2018 21:51:02

インターネット/フォーラムで検索しようとしましたが、ほとんどの場合、その-dオプションの使用に関連しており、私がサポートしていないオプションもあります-d

これはBashで動作しますが、kshで動作する必要があります。

$ printf "%(%d %h %Y %H:%M:%S)T\n" $(( $(printf "%(%s)T") - 5 * 60 ))

答え1

bash実際には%(...)Tksh93の形式をコピーしますが、一部だけをコピーします。

ksh93の機能ははるかに強力です。

$ date; printf '%(%c)T\n' 'exactly five minutes ago'
Mon  3 Sep 08:08:32 BST 2018
Mon Sep  3 08:03:32 2018

bashUnix epoch時間のみ(-1または、最新バージョンでは、次のものも入手できます。不足しているパラメータ)ksh93は複雑な相対関係(at上記の英語、crontab、ISO 8601:2004期間を含む)または絶対時間仕様をサポートしています(参照:テストデータいくつかの例のソースコードから)。

ksh93epoch時間を渡すには、prefixを使用してください#

$ printf '%(%c)T\n' '#0'
Thu Jan  1 00:00:00 1970

(ここでも、イギリスのタイムゾーンのエポック時間0が午前1時なので、間違った時間を提供することがあります。)

答え2

あなたが使用できるperl

echo $(( $(printf "%(%s)T") - 5 * 60 )) | perl -lne 'print scalar localtime $_'

または純粋なPerlでは:

perl -le 'print scalar localtime(time()-5*60)'

フォーマットを使用するにはstrftime()

perl -MPOSIX=strftime -le 'print strftime("%d %h %Y %H:%M:%S", localtime(time()-5*60))'

関連情報