The UNIX and Linux Forums  


Go Back   UNIX e Linux Forum > Inizio Forum > UNIX for Dummies Domande & Risposte > Risposte alle domande più frequenti > Suggerimenti e Tutorial
.
google unix.com



Suggerimenti e Tutorial Articoli utili da parte dei nostri utenti.

LinkBacks (?)
LinkBack a questo Thread: http://www.unix.com/tips-tutorials/31944-simple-date-time-calulation-bash.html
Posted By Per Tipo + + digitare Data
yoga_sawant's Bookmarks su Delicious Questo thread Refback 12-25-2008 09:43 AM

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
Scarica la data e l'ora per il passato da 1 ora data corrente spch2o Shell scripting e di programmazione 5 08-29-2008 05:32 AM
L'elaborazione di un file di log in base alla data / ora di ingresso e la data / ora di file di log primp Shell scripting e di programmazione 4 03-16-2008 11:23 AM
un modo semplice per convertire una data in pochi secondi alla normale data Travian HP-UX 2 11-23-2006 12:25 PM
semplice script bash per ftp? satnamx Shell scripting e di programmazione 1 04-21-2006 12:18 PM
Semplice script bash xaphalanx Shell scripting e di programmazione 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 Cerca in questo Thread Rating: Thread Rating: 1 votes, 4.00 average. Modalità di visualizzazione
  1 links from elsewhere to this Post. Click to view. #1 (permalink)  
Old 10-08-2006
ripat ripat is offline Forum Advisor  
Utente Registrato
  
 

Iscriviti Data: ottobre 2006
Posizione: Belgio
Interventi: 439
Semplice la data e l'ora in calulation BASH

Il GNU Data di comando in piena di oggetti, ma non quando si tratta di calcolare una data o di differenza di tempo. Ecco cosa mi è venuto dopo, con la ricerca di più di una soluzione.

Codice di autoregolamentazione devono essere spiegati.


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

Attenzione: il formato non standard % s potrebbero non funzionare su tutte le versioni di data. Funziona bene della mia GNU data 5.2.1

Ultimo a cura di ripat; al 10/09/2006 11:57 AM.. Motivo: Aggiunto alcune opzioni per la funzione DateDiff
 

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 11:22 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0