The UNIX and Linux Forums  

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > UNIXのダミー質問と回答のため > よくある質問への回答 > ヒントとチュートリアル
Googleのunix.com



ヒントとチュートリアル 我々のユーザからの役立つ記事。

LinkBacks (
このスレッドにLinkBack http://www.unix.com/tips-tutorials/31944-simple-date-time-calulation-bash.html :
投稿 〜のために 種類 日付
美味しいyoga_sawantのブックマークに このスレッド Refback 2008年12月25日 09:43午前

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
過去1時間の日から現在の日付と時刻を取得 spch2o シェルプログラミングとスクリプティング 5 2008年8月29日 05:32午前
ログの日付を基に/時間を入力し、日付/時間、ログファイルの処理 めかし込む シェルプログラミングとスクリプティング 4 2008年3月16日 11:23午前
秒単位で、通常の日には、日付を変換するのは簡単な方法 travian HP - UX 2 2006年11月23日 12:25午後
簡単なbashスクリプトftpに? satnamx シェルプログラミングとスクリプティング 1 2006年4月21日 12:18午後
簡単なbashスクリプト xaphalanx シェルプログラミングとスクリプティング 3 2005年12月21日 03:54午後

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack ( 1 ) スレッドツール このスレッドを検索 評価: Thread Rating: 1 votes, 4.00 average. 表示モード
  1 links from elsewhere to this Post. Click to view.1固定リンク)  
Old 2006年10月8日
ripat ripat is offline Forum Advisor  
登録ユーザー
  
 

参加日: 2006年10月
場所:ベルギー
投稿数:441
bashの日付と時刻の簡単なcalulation

その のGNU 楽しい内容でいっぱいのdateコマンドではない場合の違いは、日付や時刻を計算しています。ここで私が1つ以上のソリューションをして来た後に何をされています。

コード自己を説明する必要があります。


コード:
#!/bin/bash

date2stamp () {
    date --utc --date "$1" +%s
}

stamp2date (){
    date --utc --date "1970-01-01 $1 sec" "+%Y-%m-%d %T"
}

dateDiff (){
    case $1 in
        -s)   sec=1;      shift;;
        -m)   sec=60;     shift;;
        -h)   sec=3600;   shift;;
        -d)   sec=86400;  shift;;
        *)    sec=86400;;
    esac
    dte1=$(date2stamp $1)
    dte2=$(date2stamp $2)
    diffSec=$((dte2-dte1))
    if ((diffSec < 0)); then abs=-1; else abs=1; fi
    echo $((diffSec/sec*abs))
}

# USAGE # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 

# convert a date into a UNIX timestamp
    stamp=$(date2stamp "2006-10-01 15:00")
    echo $stamp

# from timestamp to date
    stamp2date $stamp

# calculate the number of days between 2 dates
    # -s in sec. | -m in min. | -h in hours  | -d in days (default)
    dateDiff -s "2006-10-01" "2006-10-32"
    dateDiff -m "2006-10-01" "2006-10-32"
    dateDiff -h "2006-10-01" "2006-10-32"
    dateDiff -d "2006-10-01" "2006-10-32"
    dateDiff  "2006-10-01" "2006-10-32"

# number of seconds between two times
    dateDiff -s "17:55" "23:15:07"
    dateDiff -m "17:55" "23:15:07"
    dateDiff -h "17:55" "23:15:07"

# number of minutes from now until the end of the year
    dateDiff -m "now" "2006-12-31 24:00:00 CEST"

# Other standard goodies from GNU date not too well documented in the man pages
    # assign a value to the variable dte for the examples below
    dte="2006-10-01 06:55:55"
    echo $dte

    # add 2 days, one hour and 5 sec to any date
    date --date "$dte  2 days 1 hour 5 sec"

    # substract from any date
    date --date "$dte 3 days 5 hours 10 sec ago"
    date --date "$dte -3 days -5 hours -10 sec"

    # or any mix of +/-. What will be the date in 3 months less 5 days
    date --date "now +3 months -5 days"

    # time conversions into ISO-8601 format (RFC-3339 internet recommended format)
    date --date "sun oct 1 5:45:02PM" +%FT%T%z
    date --iso-8601=seconds --date "sun oct 1 5:45:02PM"
    date --iso-8601=minutes

    # time conversions into RFC-822 format
    date --rfc-822 --date "sun oct 1 5:45:02PM"

警告: 非標準形式 % sを 日のすべてのバージョンでは動作しない可能性があります。私の作品の罰金 のGNU 日付5.2.1

編集ripatで最終; 2006年10月9日に 11:57午前..理由:関数dateDiffにいくつかのオプションを追加
 

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 04:37午前


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0