web-dev-qa-db-ja.com

bashで指定された日付に秒を追加します

完全な日付と時間と分があります。秒数を追加し、結果を日付「day.month.year hour:minute」として表示したいと思います。

「日付」は特定の日付に秒を追加できないようです。

7
Markus

実際、GNU dateコマンド(Ubuntuの標準実装)は、日付オフセットを直接追加できます-たとえば、指定された日付に3662秒(1時間、1分、2秒)を追加します

$ date '+%d.%b.%Y %T' --date="2012-06-13 09:16:16 EDT + 3662 seconds"
13.Jun.2012 10:17:18

ただし、タイムゾーンと夏時間にはある程度の注意が必要です-より安全なオプションは、おそらくエポックの開始から元の時間を秒に変換し、希望の形式に戻す前に希望のオフセットを追加することです。

$ secs=$(date +%s --date="2012-06-13 09:16:16")
$ date '+%d.%b.%Y %T' --date="@$((secs + 3662))"
13.Jun.2012 10:17:18
13
steeldriver

このような:

$ date +%x.%H:%M:%S:%N
01/21/2014_16:02:07:422856522

それは私のために米国スタイルのデータを示していますが、詳細については man date を参照してください。 2つの興味深いオプション:

%N     nanoseconds (000000000..999999999)
%S     second (00..60)

また、標準の年、月、日の形式を使用する場合:

$ date +%Y.%m.%d_%H:%M:%S:%N
2014.07.21_16:07:52:641771706
2
Rinzwind

また、次の方法で現在の日付を簡単にインクリメントできます。

date --date="+1 seconds" '+%Y-%m-%d %T'

man dateは、これはinfo dateに文書化されていると言いますが、引用するためにinfoのマニュアルを読む気はありません:-)

Ubuntu 18.04でテスト済み、date Coreutils 8.28から。