The UNIX and Linux Forums  


Go Back   De Unix-en Linux Forum > Top Forums > UNIX voor Dummies Questions & Answers > Answers to Frequently Asked Questions > Tips en Tutorials
.
google unix.com



Tips en Tutorials Nuttige artikelen van onze gebruikers.

LinkBacks (?)
LinkBack to this Thread: http://www.unix.com/tips-tutorials/31944-simple-date-time-calulation-bash.html
Gepost Door Voor Type Datum
yoga_sawant's Bookmarks op Delicious Deze draad Refback 12-25-2008 09:43

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Haal de datum en tijd voor afgelopen 1 uur vanaf de huidige datum spch2o Programmeren en Shell Scripting 5 08-29-2008 05:32
Verwerken van een logbestand op basis van datum / tijd input en de datum / tijd op de log-bestand opdoffen Programmeren en Shell Scripting 4 03-16-2008 11:23
een eenvoudige manier van het omzetten van een datum in seconden op de normale datum travian HP-UX 2 11-23-2006 12:25
simpel bash script ftp? satnamx Programmeren en Shell Scripting 1 04-21-2006 12:18
Gewone Bash Script xaphalanx Programmeren en Shell Scripting 3 12-21-2005 03:54 PM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack (1) Thread Tools Zoeken in deze Thread Waardering: Thread Rating: 1 votes, 4.00 average. Display Modes
  1 links from elsewhere to this Post. Click to view. #1 (permalink)  
Old 10-08-2006
ripat ripat is online now Forum Advisor  
Geregistreerde gebruiker
  
 

Join Date: Oct 2006
Locatie: België
Posts: 439
Gewone datum en tijd calulation in BASH

De GNU datum opdracht in vol goodies, maar niet als het gaat om het berekenen van een datum of tijd verschil. Hier is wat ik kwam op na op zoek naar meer dan een oplossing.

Code moet worden zelf uitleggen.


Code:
#!/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"

Waarschuwing: de niet-standaard formaat % s misschien nog niet werkt op alle versie van datum. Werkt prima van mijn GNU datum 5.2.1

Laatst gewijzigd door ripat; op 10.09.2006 11:57.. Reden: Toegevoegd enkele opties voor de functie DateDiff
 

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 09:20.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0