Encoder: Mit Tagen rechnen

Hallo
Ich spiele momentan mit der Berechnunge von Tagen rum. Wie viele Tage liegen zwischen x und y usw.
Dabei bräuchte ich etwas womit ich wirklich nur Tage habe, nicht die Zeit inklusive Zeitverschiebung.
Wie kann ich möglichst elegant aus time() nur den heutigen Tag machen, abzüglich der Zeit? Bisher mit floor(time / 86400) * 86400, ist nicht gerade so der Hammer.
Wenn ich x * 86400 Sekunden auf einen Tag rechne, kommt mir die Zeitverschiebung in die Quere. Da ist dann doch irgendwann wieder eine Stunde mehr dabei und ein Vergleich tagX - tagY gibt keine ganze Zahl mehr.
Gibt es da was besseres als mit dem Unix Timestamp zu rechnen? Ständig runden und dividieren usw. kanns doch auch nicht sein.

  1. Tach!

    Dabei bräuchte ich etwas womit ich wirklich nur Tage habe, nicht die Zeit inklusive Zeitverschiebung.

    Wenn dir die Zeit egal ist, nimm die gm-Funktionen, die rechnen mit UTC, da sind die Tage immer gleich lang.

    dedlfix.

  2. Hallo,
    kommt drauf an welche PHP-Version dir zur Verfügung steht. Ab 5.3 sollten dir die Funktionen rund um DateTime behilflich sein.

    Tschau

    Tobias

    --
    Speedswimming? Finswimming? Flossenschwimmen?
    ie:{ fl:| br:> va:) ls:[ fo:| rl:( n4:° ss:| de:] ch:? mo:) zu:)
    Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
    Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
  3. Moin!

    Wie kann ich möglichst elegant aus time() nur den heutigen Tag machen, abzüglich der Zeit? Bisher mit floor(time / 86400) * 86400, ist nicht gerade so der Hammer.

    Nutze die DateTime-Objekte. Die sind maximal elegant, würde ich meinen.

    - Sven Rautenberg

  4. hi,

    Gibt es da was besseres als mit dem Unix Timestamp zu rechnen? Ständig runden und dividieren usw. kanns doch auch nicht sein.

    Bauernregel: Rechne damit, dass Du rechnen musst ;)

    Meine kleine Date-Lib implemtiert das Rechnen mit ganzen Tagen und läuft abwärtskompatibel zu 5.2

    Berechnungen nach Scaliger, Epoche
    Begin: 1.1.-4713    0
    End:   22.1.3268    2914694

    Gregorianische Reform: Die Tage 4.10.1582 und 15.10.1582 sind aufeinanderfolgend.

    -Kalenderwoche (DIN, ISO, de)
    -Datumsdifferenzen
    -Tage addieren, subtrahieren
    -Wochentage deutsch und numerisch für eigene Zuweisungen in anderen Sprachen

      
    try{  
    	$d = new Date (array('date' => array(  
    		1,2,1582  
    	)));  
    	echo $d->days_in_month();  
    }  
    catch(Exception $e){ echo $e;}  
    
    

    Ausgabe eines Public-Objekts mit Zugang zu verschiedenen Angaben

      
    	// returns a simple object allows further calculation out of this class  
    	public function dateobject(){  
    		return (object) array(  
    			'Julianday'     => $this->JD,  
    			'Weekday'       => $this->WDAY,  
    			'Day'           => $this->DAY,  
    			'Month'         => $this->MONTH,  
    			'Year'          => $this->YEAR,  
    			'Leap'          => $this->LEAP,  
    			'Epoch'         => $this->EPOCH,  
    			'Kalenderwoche' => $this->KW,  
    		);  
    	}  
    
    

    Bei Interesse stelle ich die Lib zum Download.

    Hotti

    1. Om nah hoo pez nyeetz, hotti!

      Gregorianische Reform: Die Tage 4.10.1582 und 15.10.1582 sind aufeinanderfolgend.

      Wenn du was zum Basteln möchtest: Der gregorianische Kalender wurde in verschiedenen Gebieten der Welt zu sehr unterschiedlichen Zeiten eingeführt. Selbst in Deutschland galt die Kalenderreform zunächst nur für die katholischen Gebiete. Die evangelischen Gebiete Deutschland übernahmen den Kalender 1700. Auf den 18.2. folgte der 1.3.

      Matthias

      --
      1/z ist kein Blatt Papier.

      1. hi,

        Gregorianische Reform: Die Tage 4.10.1582 und 15.10.1582 sind aufeinanderfolgend.

        Wenn du was zum Basteln möchtest: Der gregorianische Kalender wurde in verschiedenen Gebieten der Welt zu sehr unterschiedlichen Zeiten eingeführt.

        Kalender sind ein Politikum. Es ist nicht möglich, dass alles programmiertechnisch zu erfassen und zu verarbeiten. Es ist jedoch möglich, konkrete Korrelationen zu berechnen, wenn es dafür einen Bedarf gibt. Das Lebenswerk JJ Scaligers bestand darin, eine Berechnungsgrundlage für aufeinanderfolgende Tage zu schaffen (siehe o.g. Übergang) und selbst daran hatte nicht einmal die Kirche ein Interesse.

        Hotti

  5. Vielen Dank für die Tips.
    Ich denke vorerst komme ich mit gmdate zurecht. Mir geht es nur darum dass ich aus einem Tag den Zeitanteil löschen kann und dann Funktionen habe die mir daraus wieder wirklich genau den gemeinten Tag anzeigen können, ohne dass ich noch irgendwas auf Mitternacht runden müsste.