答え1
できますが、複雑になります。 1970年1月1日木曜日の深夜から経過した秒数など、単純な秒単位の日付がある場合(POSIX時間)、1分を追加するのは比較的簡単です。
$ date +%s
1379385111
$ date +%s | awk '{print "Current time is",$1,"soon will be", $1+60}'
Current time is 1379385275 soon will be 1379385335
大丈夫です。しかし、人間が読むことができる時間にしたい場合はどうすればよいですか? 4ヶ月2週間を追加したいですか?数秒以内に計算するのも痛く、そのような日付を解釈するのも簡単ではありません。たとえば、1を411174000
表す日付は何ですか?
Sun 12 Dec 1936
たとえば、3週間をどのように追加しますか?日付操作ライブラリが利用できない場合、これは驚くほど難しい問題になります。すべての日付を秒に変換して追加します。 2月とうるう年はもちろん、月は30日で、月は31日です。これは実際には小さな問題ではありません。これはまさにほとんどのプログラミング言語です持つ日付演算ライブラリ(真珠たとえば、または氏)。
さらに、または同じ日付をdate
処理し、それを加算または減算し、数値文字列の代わりに人が読める日付を返すことができます。tomorrow
Oct 18 2017
標準的な手順でこれを簡単に実行できますが、date
なぜ私たちは車輪を再発明しなければならないのですか?
1今日は1983年1月12日水曜日00:00:00 CETです。
答え2
時間と日付を操作するためによく設計されたライブラリ以外のものを使用するのは悪い考えです。マイナーな問題は、夏時間、うるう年、うるう秒、タイムゾーンなどの非常に複雑な問題にすばやく変更できます。
プログラマーたちは「あ、これには早い機能を1、2個だけすればいい」と絶えず考えるが、最近のイベントを振り返る必要もなく、アップル開発者たちもそう考えてイベントを正しく処理しなかった。夏時間への正しい変換。
抜粋
夏時間(DST)は数時間前にアメリカで始まりました。つまり、時計は午前1時59分から午前3時まで速くなりました。
しかし、一部のiPhoneユーザーは夏時間の変更に関するさまざまな問題を報告しました。
TUAWレポート:
何人かの読者は昨夜、彼らのiPhoneの時計が予想通りに1時間前に進まず、代わりに自動タイムゾーン調整の問題のために間違った方向、つまり1時間後に動いたと報告しています。ナッシュビルのある読者の電話は、彼が山地標準時(Mountain Time)にいると考え、フロリダの読者の電話はシカゴの時間だと確信していました。私たちの同僚Mel Martinは、主に夏時間を守らないアリゾナ州に住んでいます。しかし、彼の電話(自動タイムゾーン設定と位置設定がオンになっている)が誤って1時間前になりました。
結論
問題が単純であるという事実に惑わされず、ライブラリを使用してください!
答え3
基本的には可能ですが、移植性が不足して失敗する可能性があり、最終的にはより多くの努力が必要になります。
awk
分を3ずつ増やしたいとしましょう。 (59より大きい場合は無視して00にリセットする必要があります):
$ date
Mon Sep 16 22:52:42 AST 2013
$ date | awk -F: '{printf $1 ":" ; printf $2+3 ":" ; print $3}'
Mon Sep 16 22:55:43 AST 2013
そこが好きです。しかし、今は分が59に達するたびに00にリセットされる機能を開発する必要があります。もう良くありません。したがって、テキストを解析するよりも時間を増やす自然な方法が好まれます。