2011-06-08 18 views
1

私は+%m/%d/%Yの日付を別の日数にしたいと思っています。シェルスクリプト:日付を含む秒数を解析する

$(($(date +%s)- 259200)) 3日前の秒です。 -dパラメータでは、05/06/2011が必要な形式(エラーメッセージ:date: invalid date '1307284916')で解析する秒数を受け付けません。

dateを機能させる方法はありますか?

答えて

3

を-dするための単純なタイムスタンプを受け入れるようにLinux上で日付を取得するには、@記号と番号の前に付けます!

~% date +%s 
1307548153 
~% date -d @1307548153 
Wed Jun 8 16:49:13 IST 2011 
+0

をやってみよう – webstrap

0

MacOS Xでは、date -r 1307284916 +%m/%d/%Yを使用して必要な結果を得ることができます。 MacOS XのようなBSD由来のシステムではない場合(例えば、Linuxを使用している場合)、date -rの単純なアナログのようではありません。また、Unixの伝統的なバージョンは、通常、GNUのdateの機能を提供していません。あなたが本当に動けなくなる場合

は、プログラムtimestampのために(私のプロフィールを参照してください)私に連絡:

$ timestamp -T '%m/%d/%Y' 1307284916 
1307284916 = 06/05/2011 
$ timestamp -n -T '%m/%d/%Y' 1307284916 
06/05/2011 
$ timestamp -T '%m/%d/%Y' 1307284916 $(($(date +%s)- 259200)) 
1307284916 = 06/05/2011 
1307288704 = 06/05/2011 
$ 
+0

Linuxは時間を表すために @使用していますので、あなたはそれらのシステム上で表示することを依頼する日付-d = @を使用することができます。 – Petesh

+0

@Petesh:それは面白いです。私は 'date(GNU coreutils)5.97'と2006年の著作権日付を持つ古典的な(RHEL5)Linuxを使用しています。 '@'表記は認識されません。 –

+0

@ coretils IIRC – Petesh