特定のタイムスタンプの前後60分を取得する - Shell/ksh

特定のタイムスタンプの前後60分を取得する - Shell/ksh

特定の時間の時間範囲を取得したいです。開始時間は与えられた時間60分前、終了時間は与えられた時間60分後とします。

目的:与えられた時間は「影響時間」に等しく、ログを傷つけるために影響時間の周りの適切な時間範囲を取得したいと思います。

例: 与えられた時間は 2018-05-16 20:30:00 で、形式は '%Y-%m-%d %H:%M:%S' です。

ヘルプ:開始時間は2018-05-16 19:30:00終了時間は2018-05-16 21:30:00

これは常にPDT / PSTモードで、日付時刻形式が "%Y-%m-%d%H:%M:%S"のサーバーで実行されます。

ベストアンサー1

タイムゾーンとGNUの日付が正しく設定されていると仮定すると、Unixタイムスタンプを取得して60分を減算して加算し、必要な形式に戻すことができます。

$ ts=$(date -d "2018-05-16 21:30:00" +%s)  # For BSD date: date -jf "%F %T" "2018-05-16 21:30:00" +%s 
$ echo "$(date -d@$((ts - 3600)) +"%F %T")"
2018-05-16 20:30:00
$ echo "$(date -d@$((ts + 3600)) +"%F %T")"
2018-05-16 22:30:00

...これはうるう秒を正しく説明していないようです。すべてのプログラマが知っておくべき時間に関するさまざまなその他の問題

おすすめ記事