The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > UNIX for Dummies Spørsmål og svar > Svar på vanlige spørsmål > Tips og Tutorials
.
google unix.com



Tips og Tutorials Nyttige artikler fra våre brukere.

LinkBacks (?)
LinkBack to this Thread: http://www.unix.com/tips-tutorials/31944-simple-date-time-calulation-bash.html
Posted by For Type Dato
yoga_sawant's Bookmarks på Delicious Denne tråden Refback 12-25-2008 09:43

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Få dato og klokkeslett for siste 1 time fra dagens dato spch2o Shell programmering og Skripting 5 08-29-2008 05:32
Behandlingen av en loggfil basert på dato / klokkeslett skriving og dato / tid på loggfilen primp Shell programmering og Skripting 4 03-16-2008 11:23
en enkel måte å konvertere en dato i sekunder til normal dato Travian HP-UX 2 11-23-2006 12:25
enkelt bash script til ftp? satnamx Shell programmering og Skripting 1 04-21-2006 12:18
Enkelt Bash Script xaphalanx Shell programmering og Skripting 3 12-21-2005 03:54

 
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 Søk i denne tråden Vurdering: Thread Rating: 1 votes, 4.00 average. Visningsmoduser
  1 links from elsewhere to this Post. Click to view. #1 (permalink)  
Old 10-08-2006
ripat ripat is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: Oct 2006
Bosted: Belgia
Innlegg: 438
Enkelt dato og klokkeslett calulation i bash

Den, det GNU Dato kommando i fullt av godbiter, men ikke når det gjelder å beregne en dato eller et klokkeslett forskjell. Her er hva jeg kom opp med etter jakt på mer enn en løsning.

Koden skal selv forklare.

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"
Advarsel: ikke-standard format % s kanskje ikke fungerer på alle versjoner av dato. Fungerer fint på min GNU Dato 5.2.1

Sist endret av ripat; 10-09-2006 kl 11:57.. Årsak: Lagt til noen alternativer til funksjonen dateDiff
 

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 07:47.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0