Ergebnis 1 bis 7 von 7

Thema: Datumsberchnung - Differenz zwischen 2 Daten

  1. #1
    TP-Senior
    Registriert seit
    Sep 2003
    Ort
    Cabarete
    Beiträge
    127

    Post Datumsberchnung - Differenz zwischen 2 Daten

    HI!
    habs gerade gebraucht und mir zusammen gebastelt. Vielleicht kanns einer gebrauchen:
    PHP-Code:
    <?php
    // Differenz zwischen zwei Daten.
    $datum1="12.12.2007";
    $datum2="13.12.2008";
    // Declare functions ---------------------------------------------------------------------------------------------------------


    function condate($condate) {
    $date_elements  explode(".",$condate);
    return 
    mktime(0,0,0,$date_elements[1],$date_elements[0],$date_elements[2]);
    }


    $sec1=condate($datum1); //Sekunden seit unix Timestamp für Datum1
    echo "$sec1<br>";
    $sec2=condate($datum2); //Sekunden seit unix Timestamp für Datum2
    echo "$sec2<br>";

    $secdiff $sec2-$sec1;       // Differenz der UnixTimestamp vergangenen Sekunden
    echo "Sekunden:$secdiff<br>";
    $minuten=$secdiff/60;
    echo 
    "Minuten:$minuten<br>";
    $stunden $minuten/60;
    echo 
    "Stunden:$stunden<br>";
    $tage $stunden/24;
    echo 
    "Tage:$tage<br>";

    ?>

  2. #2
    TP-Veteran Avatar von Guin
    Registriert seit
    Nov 2006
    Ort
    Nordholz
    Beiträge
    1.684
    Ich habe deine Funktion mal abgewandelt. Uhrzeitangaben sind nun auch moeglich.

    PHP-Code:
    <?php
    // Differenz zwischen zwei Daten.
    $date1="12.12.2007T16:00:00";
    $date2="13.12.2008T16:00:05";
    //$date3= "12.12.2008"; // geht so natuerlich auch. Uhrzeit ist dann 00:00:00
    $diff_sekunden=0;
    $sekunden=0;
    $minuten=0;
    $mod_minuten=0;
    $stunden=0;
    $mod_stunden=0;
    $tage=0;
    $mod_tage=0;

    // Declare functions -
    function difference_date($d1$d2) {
       return 
    strtotime($d2)-strtotime($d1);
    }

    $diff_sekunden=difference_date($date1$date2);
    $tage=floor($diff_sekunden/86400);
    $mod_tage=$diff_sekunden%86400;
    $stunden=floor($mod_tage/3600);
    $mod_stunden=$mod_tage%3600;
    $minuten=floor($mod_stunden/60);
    $sekunden=$mod_stunden%60;


    echo 
    $date1." - ".$date2."<br />";
    echo 
    "Differenz: ".$tage." Tage, ".$stunden." Stunden, ".$minuten." Minuten und ".$sekunden." Sekunden<br />";
    ?>
    Gruss Guin
    Mein Blog

  3. #3
    TP-Specialist Avatar von MichaelM
    Registriert seit
    Jan 2004
    Ort
    Münster-Hiltrup
    Beiträge
    2.333
    Hallo,

    Kann mir mal einer erklären, warum das Script bei mir nicht läuft?

    ausgegeben wird folgendens:

    12.12.2007T16:00:00 - 13.12.2008T16:00:05
    Differenz: 0 Tage, 0 Stunden, 0 Minuten und 0 Sekunden

    Das ist doch wohl falsch oder?
    Harleylujar, Michael!!

    Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...

    www.mikel-mueller.de
    www.sanitaertechnik-mueller.de

  4. #4
    TP-Veteran Avatar von Guin
    Registriert seit
    Nov 2006
    Ort
    Nordholz
    Beiträge
    1.684
    Wenn ich mein Skript direkt kopiere und so benutze, kommt
    "Differenz: 367 Tage, 0 Stunden, 0 Minuten und 5 Sekunden"
    heraus.

    Hast du einen Fehler beim Kopieren gemacht?

    Wenn du PHP >5.0 benutzt, schreibe mal an den Anfang
    error_reporting(E_STRICT);
    date_default_timezone_set("Europe/Berlin");
    (die zweite Zeile ist nur dafuer da, damit kein Warning ausgegeben wird).
    Es sollten keine Fehlermeldungen oder Warnungen erscheinen.

    Wenn du php 4 nutzt, verwende statt "E_STRICT" "E_ALL".
    Gruss Guin
    Mein Blog

  5. #5
    TP-Specialist Avatar von MichaelM
    Registriert seit
    Jan 2004
    Ort
    Münster-Hiltrup
    Beiträge
    2.333
    Danke für Deine Antwort,

    hatte das 2. Script kopiert.
    Das läuft bei mir nicht.

    Habe es jetzt ein wenig aufpoliert mit Formularfeldern.

    PHP-Code:
    <?php 
    // Differenz zwischen zwei Daten. 
    $datum1=$_POST['datum1'];
    $datum2=$_POST['datum2']; 
    // Declare functions --------------------------------------------------------------------------------------------------------- 


    function condate($condate) { 
    $date_elements  explode(".",$condate); 
    return 
    mktime(0,0,0,$date_elements[1],$date_elements[0],$date_elements[2]); 



    $sec1=condate($datum1); //Sekunden seit unix Timestamp für Datum1 
    /*
    echo "$sec1<br>"; */
    $sec2=condate($datum2); //Sekunden seit unix Timestamp für Datum2 
    /*
    echo "$sec2<br>"; */

    $secdiff $sec2-$sec1;       // Differenz der UnixTimestamp vergangenen Sekunden 
    echo "Sekunden: $secdiff<br>"
    $minuten=$secdiff/60
    echo 
    "Minuten: $minuten<br>"
    $stunden $minuten/60
    echo 
    "Stunden: $stunden<br>"
    $tage $stunden/24
    $formattage=round($tage,2);
    echo 
    "Tage: $formattage<br>"
    ?> 

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Unbenanntes Dokument</title>
    </head>

    <body>
    <form id="form1" name="form1" method="post" action="">
      <label for="textfield"></label>
      <p>
        Startjahr:
        <input type="text" name="datum1" id="datum1" />
    </p>
      <p>
        <label for="label"></label>
        Endjahr: 
        <input name="datum2" type="text" id="label" value="<?= date("d.m.Y");?>" />
    </p>
      <p>
        <label for="Submit"></label>
        <input type="submit" name="Submit" value="berechnen" id="Submit" />
      </p>
    </form>
    </body>
    </html>
    Geändert von MichaelM (10.05.2007 um 12:07 Uhr)
    Harleylujar, Michael!!

    Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...

    www.mikel-mueller.de
    www.sanitaertechnik-mueller.de

  6. #6
    TP-Specialist Avatar von MichaelM
    Registriert seit
    Jan 2004
    Ort
    Münster-Hiltrup
    Beiträge
    2.333
    Noch einmal eine Frage,

    berücksichtigt dieses Script auch Schaltjahre?
    Harleylujar, Michael!!

    Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...

    www.mikel-mueller.de
    www.sanitaertechnik-mueller.de

  7. #7
    TP-Veteran Avatar von Guin
    Registriert seit
    Nov 2006
    Ort
    Nordholz
    Beiträge
    1.684
    Ja, beide Skripte beruecksichtigen das.
    Gruss Guin
    Mein Blog


Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)


Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51