kostenloser Webspace werbefrei: lima-city


Mit Datum die Differenz in Tage ausrechnen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    fly-europe

    fly-europe hat kostenlosen Webspace.

    Hallo :)

    Ich habe zwei Daten zB. 25-40-2004 und date(Y, m, d) . Aus diesen Daten will ich mir nun die Differenz errechnen. Aber in Tagen. hab rumgetüftelt.. hatte aber keine Idee für einen Code, der mir das ausrechnet :confused:

    MfG
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    Ich schätze, du meinst z.b. 25-04-2004
    also quasi den 25. April 2004.

    Prinzipiell kannst du das über den timestamp machen.

    <?php
    $datum = '20-04-2004';
    $arrDatum = explode('-',$datum);
    $date1 = mktime(0,0,0,$arrDatum[1],$arrDatum[0],$arrDatum[2]);
    $date2 = time();
    $zeit = $date2-$date1;
    $tage = floor($zeit/86400);
    echo $tage;
    ?>


    http://www.selfphp.de/funktionsreferenz/string_funktionen/explode.php
    http://www.selfphp.de/funktionsreferenz/datums_und_zeit_funktionen/mktime.php
  4. Das geht auch einfacher. ;)
    <?php
      $date1 = strtotime('25-04-2004');
      $date2 = time();
      print floor(($date2-$date1)/86400);
    ?>


    http://www.php.net/manual/de/function.strtotime.php


    Beitrag geändert: 7.7.2007 15:53:50 von i-spacke
  5. Schau doch einfach mal in den Ticker oder auf die Startseite:
    http://www.lima-city.de/boards/thread/63496


    gruß
    ferdinand24
  6. Autor dieses Themas

    fly-europe

    fly-europe hat kostenlosen Webspace.

    Angemerkt ferdinand24! Aber da gibt es noch eine Frage, die im anderen Thread nicht drin ist:

    Jo ok. Aber da gäbe es noch ein Problem mit Februaren. Man weiß ja

    Schaltjahr:
    Jan 31 Tage
    Feb 29 Tage
    Mär 31 Tage
    Apr 30 Tage
    Mai 31 Tage
    Jun 30 Tage
    Jul 31 Tage
    Aug 31 Tage
    Sep 30 Tage
    Okt 31 Tage
    Nov 30 Tage
    Dez 31 Tage

    Kein Schaltjahr

    Jan 31 Tage
    Feb 28 Tage
    Mär 31 Tage
    Apr 30 Tage
    Mai 31 Tage
    Jun 30 Tage
    Jul 31 Tage
    Aug 31 Tage
    Sep 30 Tage
    Okt 31 Tage
    Nov 30 Tage
    Dez 31 Tage

    Beitrag geändert: 7.7.2007 16:40:44 von fly-europe
  7. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    Da du den vorgeschlagenen Berechnungen über die Sekundenanzahl gehst, spielen Schaltjahre keine Rolle. Ein Tag hat immer 86400 (=60*60*24) Sekunden. Egal, ob 29. Februar oder nicht, der Timestamp läuft immer weiter.
  8. zur erkärung: der timestamp ist die zeit in sekunden die seit 1.1.1970 vergangen ist (bin mir da nicht so sicher mit dem datum). jede sekunde wird zum timestamp eine sekunde hinzugefügt. damit ist es ganz einfach tagedifferenzen zu berechnen, da ein tag genau 86400 sekunden hat ;)
  9. Man kann sich das Timestamp-Schaltjahr-irgendwas-Gewurschtel sparen, wenn man die Kalender-Funktionen benutzt. Die rechnen rückwirkend bis 1583 richtig und weit in die Zukunft ebenfalls. Da kommt kein Timestamp mit.

    http://de.php.net/manual/de/ref.calendar.php

    // Datum 1:
    $j1 = 2004; // Jahr
    $m1 = 4;    // Monat
    $t1 = 25;   // Tag im Monat
    
    // Datum 2
    list($j2, $m2, $t2) = explode('-', date('Y-n-j'));
    
    $jdn1 = gregoriantojd($m1, $t1, $j1);
    $jdn2 = gregoriantojd($m2, $t2, $j2);
    $day_diff = $jdn2 - $jdn1;
    printf('Der Abstand beträgt %s Tage.', $day_diff);


    http://de.php.net/manual/de/function.gregoriantojd.php

    Das Ganze funktioniert aber nur, wenn die Kalender-Erweiterung auch installiert ist. Das sollte bei normalen PHP-Installationen so sein, aber auf'm Lima-Webspace fehlt sie aus (mir) unerklärlichen Gründen ...
  10. Autor dieses Themas

    fly-europe

    fly-europe hat kostenlosen Webspace.

    OK Danke. Mir kommt es hauptsächlich darauf an, wann der User das letzte Mal online gewesen ist, vor wie vielen Tagen
  11. Autor dieses Themas

    fly-europe

    fly-europe hat kostenlosen Webspace.

    Und das ganze mit der Zeit?!? Geht das genauso?

    <?php 
      $time1 = strtotime('17:13'); //oder 17-13 für 17:13Uhr
      $time2 = time(); 
      print floor(($time2-$time1)/60); //und hier auf 60 Sekunden ändern
    ?>


    Wäre das so richtig und machbar?

    Beitrag geändert: 27.7.2007 12:44:09 von fly-europe
  12. Autor dieses Themas

    fly-europe

    fly-europe hat kostenlosen Webspace.

    So, ich habe jetzt einen Timestamp. Supi aber kann man nun auch das ganze wieder rückgängig machen (auf den Tag genau)?
  13. c*********c


    fly-europe schrieb:
    So, ich habe jetzt einen Timestamp. Supi aber kann man nun auch das ganze wieder rückgängig machen (auf den Tag genau)?


    Ja, kann man: http://de.php.net/manual/de/function.date.php

    //edit: ... wenn ich Deine Frage richtig interpretiert habe ...

    Beitrag geändert: 6.10.2007 21:42:11 von compactdisc
  14. Autor dieses Themas

    fly-europe

    fly-europe hat kostenlosen Webspace.

    Hm. Ja also ich sehe da nichts, was mir weiterhelfen könnte. Du könntest ja mal Zitieren, was mir weiterhelfen sollte ;)
  15. c*a

    Worauf willst du eigentlich hinaus???
    OK Danke. Mir kommt es hauptsächlich darauf an, wann der User das letzte Mal online gewesen ist, vor wie vielen Tagen
    Die Differenz von dem aktuellen Timestamp MINUS dem Timestamp, als der User das letzte Mal online war, berechnen.

    Diese Differenz durch 864000 teilen und du hast die Tage.

    Falls du nicht nur die Tage wissen willst, sondern auch Stunden, Minuten, usw.:

    http://www.lima-city.de/boards/thread/59143/10/0

    Das ist zwar Java, es geht aber in PHP fast genauso.

    Nur musst du noch floor benutzen, da PHP nicht typensicher ist, wir aber Integer brauchen.

    diff ist die Differenz der beiden Zeitstempel.
    $seconds = floor($diff % 60);
    $tmp = $diff / 60;
    $minutes = floor($tmp % 60);
    $tmp = floor($tmp / 60);
    $hours = floor($tmp % 24);
    $days = floor($tmp / 24);


    Jetzt hast du die Zeitdifferenz in Tagen, Stunden, ... in den Variablen days, hours, ... .
  16. Autor dieses Themas

    fly-europe

    fly-europe hat kostenlosen Webspace.

    Ja aber floor() errechnet doch den Durchschnitt und nicht das Ergebnis aus ;) oder? Das war am Anfang auch meine Idee.
    Also rundet auf oder ab.

    Beitrag geändert: 12.10.2007 17:29:57 von fly-europe
  17. c*********c



    fly-europe schrieb:
    Ja aber floor() errechnet doch den Durchschnitt und nicht das Ergebnis aus ;) oder? Das war am Anfang auch meine Idee.
    Also rundet auf oder ab.

    Beitrag ge&#228;ndert: 12.10.2007 17:29:57 von fly-europe


    floor() wird zum Abrunden verwendet. => http://de.php.net/manual/de/function.floor.php
    ... und damit Du das Datum nicht "von Hand" berechnen musst => http://de.php.net/manual/de/function.date.php
  18. Autor dieses Themas

    fly-europe

    fly-europe hat kostenlosen Webspace.

    Und da w&#228;re noch was: Die Zur&#252;ckverfolgung von Tagen und Stunden hilft leider mir leider nicht ganz weiter. Ich brauche ein Daten. ZB.

    $day = 12;
    $month = 10;
    $year = 2007;
  19. c*a

    Ich sehe gerade, dass floor() ein paar mal an einer falschen Stellen war.
    So ist es richtig:
    $seconds = $diff % 60;
    $tmp = floor($diff / 60);
    $minutes = $tmp % 60;
    $tmp = floor($tmp / 60);
    $hours = $tmp % 24;
    $days = floor($tmp / 24);


    Es geht aber auch ohne die floor() Funktion:

    $seconds = $diff % 60;
    $tmp = $diff - $seconds;
    $tmp = $tmp / 60;
    $minutes = $tmp % 60;
    $tmp = $tmp - $minutes;
    $tmp = $tmp / 60;
    $hours = $tmp % 24;
    $tmp = $tmp - $hours;
    $days = $tmp / 24;


    vielleicht ist das besser verst&#228;ndlich.

    Dann nochmal: du solltest dir wirklich angew&#246;hnen deine Fragen etwas verst&#228;ndlicher zu formulieren.

    Was willst du????

    Wann der User das letzte Mal da war? => php-Funktion date() und ggf. mit list() und split() den String zerlegen, so dass du Jahr, Monat, Tag, usw. in einzelne Variablen bekommst.

    Vor wie vielen Tagen der User das letzte Mal online war => wie in meinem letzten Post beschrieben.

    ... und damit Du das Datum nicht "von Hand" berechnen musst => http://de.php.net/manual/de/function.date.php
    Das hatten wir schon...
  20. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!