• ベストアンサー

残り日数のカウント方法について

dateコマンドで出力した結果が、設定されている日付までの残り日数を計算する方法は? dateの出力形式 /bin/date +%d-%b-%Y 06-Jun-2003 設定日 : 30-Sep-2004

質問者が選んだベストアンサー

  • ベストアンサー
  • astronaut
  • ベストアンサー率58% (303/516)
回答No.1

こーゆーのは楽しいですね. man date より. %s 1970-01-01 00:00:00 UTC からの秒数 (標準外の拡張) -d datestr, --date datestr  現 在の時刻・日付の代わりに、 datestr で指定された  時刻・日付を表示する。 これらのオプションと,一日の秒数 = 86400 を組み合わせて,bash2 の計算機能 $(( )) を使うと,こんな感じ. echo $(( (`date +%s -d 30-Sep-2004` - `date %s`)/86400 ))

isshou-s
質問者

補足

回答ありがとうございました。教えていただいたdateコマンドのオプション"%s"は、Linux環境では確認できましたが、Solarisでは使えないようですが、Linuxのみのオプションですかね?また、bash2の、Solaris用のアーカイブってどこかにありますか?

その他の回答 (1)

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.2

> Solarisでは使えないようですが、Linuxのみのオプションですかね? Linux というより,GNUの拡張のようですね. GNU の coreutils に含まれる date が,この機能を持っています. Solaris環境はありませんが,HP-UX ではすんなりコンパイルできました. ftp://ftp.kddlabs.co.jp/GNU/coreutils > bash2の、Solaris用のアーカイブってどこかにありますか? あると思いますけど,知りません.計算自体は,シェルを入れ替えるまでもなく,expr で可能です. expr \( `date +%s -d 30-Sep-2004` - `date +%s` \) / 86400 でも,どうせ標準コマンドで用が足りないのなら,自分で簡単なプログラムを書いたほうが良いような気がします.

関連するQ&A

  • EXCELで残りの日数を表示させたい 2

    EXCEL2010使用 各月ごと シート別 フォーマットを作成しております。 日付 は5/1と入力 表示形式で 日にちだけ表示 曜日 は日付のセルを参照させ 表示形式で 曜日を表示 別シートに営業 休日 日を”祝日”と名前を付けて、そこがピンク色になるように 条件付き書式を設定しています。 ここで本題、 残り日数というのを自動で算出できないでしょうか? 休みは 日曜、祝日 研修日などランダムでございます。 今は手入力で残り日数だけ入れています。

  • EXCELで残りの日数を表示させたい

    EXCEL2010使用 各月ごと シート別 フォーマットを作成しております。 日付 は5/1と入力 表示形式で 日にちだけ表示 曜日 は日付のセルを参照させ 表示形式で 曜日を表示 別シートに営業 休日 日を”祝日”と名前を付けて、そこがピンク色になるように 条件付き書式を設定しています。 ここで本題、 残り日数というのを自動で算出できないでしょうか? 休みは 日曜、祝日 研修日などランダムでございます。 今は手入力で残り日数だけ入れています。

  • 設定日から指定日数後の日付の取得

    全く初心者の質問ですみません。 設定日から指定日数後の日付を取得したいと思っています。 echo $date // 正しい設定日がY-m-dで表示されます date ("Y-m-d", mktime (0,0,0,date('m',$date),date('d',$date) + $add_date,date('Y',$date))); で取得できると思ったのですが、常に1970-01-01が返されます。 先ほどecho $dateで設定した日付が表示されるにもかかわらず、 print_r(getdate($add_date)); とすると [seconds] => 31 [minutes] => 33 [hours] => 9 [mday] => 1 [wday] => 4 [mon] => 1 [year] => 1970 [yday] => 0 [weekday] => Thursday [month] => January [0] => 2011 と1970-01-01が返されます。 何故でしょうか?

    • ベストアンサー
    • PHP
  • 3分間シェルを実行する方法

    netstat の結果をログ出力する為、次のようにシェルを作成しましたがもう少し効率の良い方法はありませんでしょうか。 ■作成したシェルスクリプト ------------------------------------------------------------------------------- #!/bin/bash #ログの出力先 LOGFILE=/var/log/netstat.log #実行コマンド date "+%Y/%m/%d %H:%M:%S" >> $LOGFILE netstat -ao >> $LOGFILE sleep 30 #実行コマンド date "+%Y/%m/%d %H:%M:%S" >> $LOGFILE netstat -ao >> $LOGFILE sleep 30 #実行コマンド date "+%Y/%m/%d %H:%M:%S" >> $LOGFILE netstat -ao >> $LOGFILE sleep 30 #実行コマンド date "+%Y/%m/%d %H:%M:%S" >> $LOGFILE netstat -ao >> $LOGFILE sleep 30 #実行コマンド date "+%Y/%m/%d %H:%M:%S" >> $LOGFILE netstat -ao >> $LOGFILE sleep 30 #実行コマンド date "+%Y/%m/%d %H:%M:%S" >> $LOGFILE netstat -ao >> $LOGFILE sleep 30 -------------------------------------------------------------------------------

  • Windows XP Pro SP3 コマンドプロンプトの日時の表示に

    Windows XP Pro SP3 コマンドプロンプトの日時の表示について こんにちは。 以下質問させて下さい。 現在コマンドベースで日付を取得しようとしています。 C:\>echo %date% 上記コマンドを投げると下記のような形式で表示が返ってきます。 Wed 02/24/2010 しかし、地域と言語の設定に記述されている日付の形式(短い形式)では、 M/d/yyyy で設定されていて、曜日が出てくることは無いと思っていましたが、曜日まで出力されています。 この%date%は一体どこの書式を参照しているのでしょうか。 分かる方いらっしゃいましたらご教授下さい。

  • df -k の結果を awk で編集したいのですが。

    df -k コマンドの結果各行の最後に日付を付けて 出力したいのですが、どうしてもうまく日付が表示できないのです。 df -k | gawk '{print $1,$2,$3,$4,$5,$6,ここになんといれればよいのか?;}' 色々試しましたがうまくいきません。 ただの日付表示だと以下のechoコマンドで簡単に表示できるのですが、 これをawkに盛り込みたいのです。 echo `date +%Y/%m/%d-%H:%M` 理想の出力結果は↓こんな感じなのですが・・・どうしても出来ないのです。 /dev/sda1 118981 27037 85801 24% /boot 2007/10/29-15:00 どなたかご教授下さい。 またdf -k コマンドの各行末尾に簡単に日付を入れる方法ってないですか?

  • 経過日数の算出表示方法は?

    "経過日数の算出表示方法は?" =DATEVALUE(A5)-DATEVALUE($A$2) ある日付からの経過日数を上の式で算出表示させようとしましたら この例の場合3の表示を期待していたのですが、"#VALUE!"が表示されて計算できません。 A1・・・・A5のセグメントの書式はユーザー定義でyy/mm/ddとしています。 日付の定義ではないので、表示形式が異なるものの、日付の1997/3/4の設定にしても、経過の日数は表示されません。 経過日付を表示するのはどうするのでしょうか。 ウインドウズとエクセルのバージョンはWindows98SE/EXECEL2000(9.0.2812)です。

  • コマンドプロンプトの日数計算で工夫が必要な場合

    コマンドプロンプトを使って日数計算をしたものを修正したいのですがどうすれば良いでしょうか? set YYYYMM=%DATE:~-10,4%%DATE:~-5,2% set /a LASTMONTH=YYYYMM-1 この日数計算をすると今から一か月前の日付が取れます。 (今なら200802なので200801ですね) その内下四桁をLASTMONTHとして扱いたいのですがどうしたら良いでしょうか?例として200801と計算が出たもののうち0801だけのように抜き出したいんです。 if %LASTMONTH:~-2%==00 set /a LASTMONTH+=12-100 そのあとの分は上記のようになっています。(まだ意味がわかってはいません) よろしくお願いします。

  • Excelでの経過日数の計算について。

    ・セルの書式設定は『ユーザ定義』、種類『G/標準』 ・データの形式は『Wed Apr 18 16:48:56 +0900 2007』 ・セルの書式、データ等他の形式へ変更することは出来ません。 セルに関数を設定して、『今日又は未来』までの日数を計算することは可能でしょうか。(データは過去の日付です。) 説明が上手く出来てないかも知れませんが宜しくお願いします。

  • リダイレクトで空ファイルを生成しない方法

    以下のようにcronの実行結果にgrepをかけて、出力をファイルに書き出しているのですが、grepの結果出力がないときにサイズ0のファイルが生成されます。 cron.php | grep -v '\[ OK \]\|#!/usr/bin/php' > log/`date +%Y%m%d`cron.log 出力があるとき以外ファイルを生成させない方法はありますか? 宜しくお願い致します。