Fahrtenbuch genial!
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 26.03.2008, 16:31   #1
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User

[Tipp] PHP 5 und Datum Handling


Hallo Dynamiker,

sehr häufig hat man es in PHP mit Ausgaben, Berechnungen und Vergleichen von Datum-Werten zu tun. Das kann mitunter schon recht tricky sein und selbst so eine simple Sache wie ein Datum im amerikanischen Format (wie es z.B. MySQL benutzt) in ein deutsches Format umwandeln lässt einem graue Haare wachsen.

Seit Version 5 bringt PHP eine relativ komfortable Klasse mit sich, die einem zumindest einfache Dinge im Umgang mit Datum erleichtern. Die Klasse in PHP 5 nennt sich DateTime und ich möchte Euch hier mal 2 einfache Anwendungsbeispiele zeigen.

Amerikanisches Datum in deutsches Datum umwandeln.
PHP-Code:
$datum = new DateTime"2007-08-11 14:32:18", new DateTimeZone'CET' ) );
echo 
$datum->format"d.m.Y H:i:s" ); // Gibt aus: 11.08.2007 14:32:18
echo $datum->format"d.m.Y" ); // Gibt aus: 11.08.2007 
Der erste Parameter ist Pflicht und es wird ein Datum erwartet. Das muß nicht zwangsläufig in diesem Format vorliegen, dazu aber gleich mehr. Der 2. Parameter ist optional und legt fest welcher Zeitzone das Datum angehört. Hier kann man pauschal "CET" angeben um das Datum der Central European Time zuzuordnen. Ebenso könnte man auch explizit eine deutsche Zeitzone angeben, z.B. "Europe/Berlin" oder amerikanisch "America/New_York". Die Zeitzone ist etwa wichtig um Zeitumstellungen oder Zeitverschiebungen bei Berechnungen zu berücksichtigen. Lässt man den 2. Parameter leer, wird versucht die Zeitzone vom Server auszulesen. Das wird in den meisten Fällen ausreichend sein, sofern man nicht vorhat "globale" Berechnungen durchzuführen.
Wie hier zu sehen ist geben wir ein Datum an, wie es z.B. von einem DateTime Feld in einer MySQL DB kommen könnte.
In Zeile 2 geben wir das Datum durch die Methode format() in der gewünschten (deutschen) Formatierung aus.


Was erwartet DateTime?
Wenn man ein neues DateTime Objekt erzeugt, wird ein Parameter erwartet der identisch mit der Funktion strtotime ist. Man gibt also das Datum als String an, wobei man hier mehr oder weniger freie Hand hat. Um das Rad nicht neu erfinden zu müssen, schaut Ihr am besten bei der entsprechenden Funktion die Beispiele an um zu verstehen wie man diese Datumsangabe benutzt.


Zwei Termine vergleichen
PHP-Code:
$datum_start = new DateTime'today' );
$datum_ende  = clone $datum_start;
$datum_ende->modify'7 days' );

if (
$datum_ende->format"U" )  > $datum_start->format"U" ))
{
    echo 
"Datum liegt in der Zukunft!";
}
else
{
    echo 
"Datum ist Vergangenheit!";

Wir erzeugen ein neues DateTime Objekt ($datum_start) mit dem Datum von Heute. Dieses Objekt klonen wir ($datum_ende) und benutzen die Methode modify() um dem geklonten Objekt 7 Tage dazu zu addieren. Würden wir z.B. 7 Tage abziehen wollen, gibt man z.B. "7 days ago" an.
Anschliessend vergleichen wir die 2 Termine in der IF-Anweisung, indem wir das Datum mithilfe des Schalter "U" in einen Timestamp umwandeln.
So lässt sich sehr einfach errechnen, ob ein gewisses Datum z.B. im Bereich einer Woche liegt.

Weiterführende Informationen zu den neuen Funktionen findet Ihr wie üblich in der Dokumentation: DateTime
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
.

Geändert von Rizzo (26.03.2008 um 21:35 Uhr).
Rizzo ist gerade online   Mit Zitat antworten


Alt 26.03.2008, 16:58   #2
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
Gut zu wissen, aber - dein Link zeigt nur alle normalen Funktionen und nichts zu der DateTime Klasse? Oder bin ich nur gerade blind?
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris
Boris ist gerade online   Mit Zitat antworten
Alt 26.03.2008, 17:04   #3
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Danke Andreas, sehr nützlich das ist!
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 26.03.2008, 17:10   #4
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Boris, das ist noch nicht ins Manual eingepflegt, scheint so.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 26.03.2008, 17:11   #5
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
Zitat:
Zitat von Boris Beitrag anzeigen
Gut zu wissen, aber - dein Link zeigt nur alle normalen Funktionen und nichts zu der DateTime Klasse? Oder bin ich nur gerade blind?
Hallo Boris,

Du musst auf die einzelnen Funktionen klicken, wie etwa date_create. Ist dort ein OOP Zugriff möglich, zeigt es das in Form von
Zitat:
DateTime DateTime::__construct ([ string $time [, DateTimeZone $timezone ]] )
an - in diesem Fall offensichtlich der Konstruktor, der dem new DateTime() entspricht.
Anderes Beispiel date_date_set():
Zitat:
void DateTime::setDate ( int $year , int $month , int $day )
entspricht $objekt->setDate( 2008, 12, 24 ); usw.
Der Scope Operator (::) deutet auf OO-Zugriff hin.

Die Dokumentation ist nicht immer so logisch aufgebaut wie man es gerne hätte, aber meistens kommt man doch ganz gut damit zurecht.

EDIT
Du kannst auch so feststellen welche Methoden die Klasse hat:
PHP-Code:
echo "<pre>" .print_rget_class_methods"DateTime" ), true ). "</pre>"
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
.

Geändert von Rizzo (26.03.2008 um 17:25 Uhr).
Rizzo ist gerade online   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
[Tipp] PHP 5 und Datum Handling [Tipp] PHP 5 und Datum Handling
« MySql MyISAM Überhang | Online-Adressdatenbank erstellen »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:13 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67