The UNIX and Linux Forums  
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.

Go Back   Die UNIX-und Linux-Foren > Top Foren > UNIX for Dummies Questions & Answers > Antworten auf häufig gestellte Fragen > Tipps und Tutorials
.
Google unix.com



Tipps und Tutorials Hilfreiche Texte von unseren Nutzern.

LinkBacks (?)
LinkBack zu diesem Thread: http://www.unix.com/tips-tutorials/31944-simple-date-time-calulation-bash.html
Posted By Für Typ Datum
yoga_sawant Lesezeichen auf Delicious Dieser Thread Refback 12-25-2008 09:43 AM

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Holen Sie sich Datum und Uhrzeit für die letzten 1 Stunde vom aktuellen Datum spch2o Shell Programmierung und Scripting 5 08-29-2008 04:32 AM
Verarbeitung eine Log-Datei basiert auf Datum / Zeit-Eingang und das Datum / Zeit auf die Log-Datei primp Shell Programmierung und Scripting 4 03-16-2008 11:23 AM
eine einfache Möglichkeit der Umwandlung von einem Datum in Sekunden zum normalen Zeitpunkt Travian HP-UX 2 11-23-2006 12:25 PM
einfache Bash-Skript auf ftp? satnamx Shell Programmierung und Scripting 1 04-21-2006 11:18 AM
Einfache Bash-Script xaphalanx Shell Programmierung und 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 Suche diesen Thread Bewertung: Thread Rating: 1 votes, 4.00 average. Anzeige-Modi
  1 links from elsewhere to this Post. Click to view. #1 (permalink)  
Old 10-08-2006
ripat ripat is online now Forum Advisor  
Registrierte Nutzer
  
 

Join Date: Oct 2006
Ort: Belgien
Beiträge: 438
Einfach Datum und Uhrzeit calulation in BASH

Der GNU Datum-Befehl in voller Goodies, aber nicht, wenn es um die Berechnung eines Datum oder Uhrzeit Unterschied. Hier ist, was ich mit der Suche nach mehr als einer Lösung.

Code sollte selbsterklärend.

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"
Warnung: die Nicht-Standard-Format % s möglicherweise nicht auf allen Version von Datum. Funktioniert meiner GNU Datum 5.2.1

Zuletzt bearbeitet von ripat; am 10-09-2006 10:57 AM.. Grund: Einige Optionen, um die Funktion DatDiff
 

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 07:54 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0