逆引きシェルスクリプト/日付と日付の引き算をする方法
の編集
Top
/
逆引きシェルスクリプト
/
日付と日付の引き算をする方法
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
#navi(../) * 日付と日付の引き算をする方法・expr, date [#dd1c4ef9] dateコマンドとexprコマンドを使用することにより、日付と日付の引き算をすることができます。~ つまり、指定した2つの日付から間の日数を計算することができます。~ 以下に日付と日付の引き算の仕方を記します。~ 本コマンドの動作確認はCentOSで行いました。 #contents #htmlinsertpcsp(linux_ads_top.html,linux-sp.html) * 関連記事 [#e14361c0] -[[今日の日付が月末かどうかをdateコマンドで確認する方法>逆引きシェルスクリプト/今日の日付が月末かどうかをdateコマンドで確認する方法]] -[[翌日の日付を取得・dateコマンド>逆引きUNIXコマンド/翌日の日付を取得・dateコマンド]] -[[前日の日付を取得・dateコマンド>逆引きUNIXコマンド/前日の日付を取得・dateコマンド]] -[[Nヶ月とN日前の日付を取得・dateコマンド>逆引きUNIXコマンド/Nヶ月とN日前の日付を取得・dateコマンド]] -[[整数演算を行う・exprコマンド>逆引きUNIXコマンド/整数演算を行う・exprコマンド]] -[[exprコマンドのサンプル>逆引きシェルスクリプト/exprのサンプル]] * dateコマンドで秒を取得しexprで引き算する [#r9e45106] dateコマンドの-dと%sを使用して1970/01/01からの経過秒数を取得しexprにより引き算および一日の秒数(60*60*24=86400秒)で割ることにより経過日数を算出しています。 - man dateの抜粋 $ man date <snip> %s 1970-01-01 00:00:00 UTC からの秒数 (標準外の拡張) <snip> -d datestr, --date datestr 現 在の時刻・日付の代わりに、 datestr で指定された時刻・日付を表 示する。 datestr は普通のフォーマットならだいたいなんでも使う こ とができる。月名、タイムゾーン、‘am’ や ‘pm’ なども用いてよい。 <snip> 実際のコマンドは以下のようになります。 expr \( `date -d'年/月/日' +%s` - `date -d'年/月/日' +%s` \) / 60 / 60 / 24 * 日付の引き算を行ってみる [#dec60fed] 上記で記したコマンドで日付どうしの引き算をおこなって日数を求めてみます。 + 2011/3/11から2013/1/21までの日数を算出 $ expr \( `date -d'2013/1/21' +%s` - `date -d'2011/3/11' +%s` \) / 60 / 60 / 24 682 上記の例では、682日と算出されました。 * 関数を作って動かしてみる [#yad144ff] 以下のシェルスクリプトにより2つの日付を指定することにより日数を算出することができます。 #ref(calc_date.zip) #!/bin/bash function calc_date() { expr \( `date -d"$1" +%s` - `date -d"$2" +%s` \) / 86400 } function usage() { echo "Usage: basename $0 datestr datestr" exit 1 } if [ $# -ne 2 ]; then usage fi calc_date $1 $2 実際に上記スクリプトを実行した出力結果です。~ 上記のシェルスクリプトをchmodコマンドで実行権限をあたえています。 $ chmod +x calc_date.sh 3つ日付どうしの引き算をしてみた出力結果です。 $ ./calc_date.sh 2013/1/21 2013/1/20 1 $ ./calc_date.sh 2013/1/21 2013/1/1 20 $ ./calc_date.sh 2013/1/21 2012/1/21 366 以上、exprコマンドとdateコマンドを使用して間の日数を算出する方法でした。 #htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
タイムスタンプを変更しない
#navi(../) * 日付と日付の引き算をする方法・expr, date [#dd1c4ef9] dateコマンドとexprコマンドを使用することにより、日付と日付の引き算をすることができます。~ つまり、指定した2つの日付から間の日数を計算することができます。~ 以下に日付と日付の引き算の仕方を記します。~ 本コマンドの動作確認はCentOSで行いました。 #contents #htmlinsertpcsp(linux_ads_top.html,linux-sp.html) * 関連記事 [#e14361c0] -[[今日の日付が月末かどうかをdateコマンドで確認する方法>逆引きシェルスクリプト/今日の日付が月末かどうかをdateコマンドで確認する方法]] -[[翌日の日付を取得・dateコマンド>逆引きUNIXコマンド/翌日の日付を取得・dateコマンド]] -[[前日の日付を取得・dateコマンド>逆引きUNIXコマンド/前日の日付を取得・dateコマンド]] -[[Nヶ月とN日前の日付を取得・dateコマンド>逆引きUNIXコマンド/Nヶ月とN日前の日付を取得・dateコマンド]] -[[整数演算を行う・exprコマンド>逆引きUNIXコマンド/整数演算を行う・exprコマンド]] -[[exprコマンドのサンプル>逆引きシェルスクリプト/exprのサンプル]] * dateコマンドで秒を取得しexprで引き算する [#r9e45106] dateコマンドの-dと%sを使用して1970/01/01からの経過秒数を取得しexprにより引き算および一日の秒数(60*60*24=86400秒)で割ることにより経過日数を算出しています。 - man dateの抜粋 $ man date <snip> %s 1970-01-01 00:00:00 UTC からの秒数 (標準外の拡張) <snip> -d datestr, --date datestr 現 在の時刻・日付の代わりに、 datestr で指定された時刻・日付を表 示する。 datestr は普通のフォーマットならだいたいなんでも使う こ とができる。月名、タイムゾーン、‘am’ や ‘pm’ なども用いてよい。 <snip> 実際のコマンドは以下のようになります。 expr \( `date -d'年/月/日' +%s` - `date -d'年/月/日' +%s` \) / 60 / 60 / 24 * 日付の引き算を行ってみる [#dec60fed] 上記で記したコマンドで日付どうしの引き算をおこなって日数を求めてみます。 + 2011/3/11から2013/1/21までの日数を算出 $ expr \( `date -d'2013/1/21' +%s` - `date -d'2011/3/11' +%s` \) / 60 / 60 / 24 682 上記の例では、682日と算出されました。 * 関数を作って動かしてみる [#yad144ff] 以下のシェルスクリプトにより2つの日付を指定することにより日数を算出することができます。 #ref(calc_date.zip) #!/bin/bash function calc_date() { expr \( `date -d"$1" +%s` - `date -d"$2" +%s` \) / 86400 } function usage() { echo "Usage: basename $0 datestr datestr" exit 1 } if [ $# -ne 2 ]; then usage fi calc_date $1 $2 実際に上記スクリプトを実行した出力結果です。~ 上記のシェルスクリプトをchmodコマンドで実行権限をあたえています。 $ chmod +x calc_date.sh 3つ日付どうしの引き算をしてみた出力結果です。 $ ./calc_date.sh 2013/1/21 2013/1/20 1 $ ./calc_date.sh 2013/1/21 2013/1/1 20 $ ./calc_date.sh 2013/1/21 2012/1/21 366 以上、exprコマンドとdateコマンドを使用して間の日数を算出する方法でした。 #htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
テキスト整形のルールを表示する
添付ファイル:
calc_date.zip
703件
[
詳細
]