|
Es geht um folgendes. Jeder, der z.B. mal ein Newsscript geschrieben
hat kennt es, dass eigentlich immer das Datum der News gespeichert
wird. Hierfür benutzen die meisten wohl diesen Befehl der in etwa so
ausschaut. PHP-Code:
$datum = date("d.m.Y",time());
Der Inhalt der Variable $datum wird dann in die Datenbank geschrieben.
Eine Ausgabe würde dann ungefähr so aussehen: "18.12.2005". Diese
Anzeige ist fürs erste ok. Gehen wir einen Schritt weiter und lassen
die Zeit auch speichern. Entweder wir nehmen für die Zeit eine weitere
Spalte in der Datenbank oder speichern Datum und Uhrzeit zusammen in
einer Spalte (auch Attribut genannt). Das würde in PHP so aussehen:
PHP-Code:
$datum = date("d.m.Y - H:i",time());
In der Variablen steht nun ungefähr dies hier: "18.12.2005 - 15:00"
Eine solche Anzeige ist doch Klasse oder? 
Nun, hier stoßen wir bei bestimmten Scripten aber auf einige Probleme.
1. Der "Auftraggeber" entscheidet sich um und will statt Datum und
Uhrzeit nur das Datum angezeigt bekommen wo das Jahr nur 2 Stellen hat.
(also 18.12.05)
2. Wir wollen für eine bestimmte Routine lediglich die Uhrzeit haben.
3. Ich möchte das Datum etwas erweitern und als Resultat folgendes
stehen haben: "Am 18.12.2005 hat *** um 15:00 Uhr folgendes geschrieben"
4. Ich möchte 2 unterschiedliche Datumsangaben vergleichen, auf Gleichheit sowie auf Unterschiedlichkeit.
Es gibt noch mehrere Probleme die Auftreten. Diese 4 Punkte zeigen
aber, dass das speichern des Datums und der Uhrzeit in dem Format wie
oben beschrieben nicht sehr dolle ist. Die Ausgabe des Datums und der
Uhrzeit ist fest, da sie so in die Datenbank geschrieben wurde. Was
nun? Wie löse ich diese Probleme ohne große Funktionen schreiben zu
müssen? Die Lösung ist ganz einfach.
Es gibt in PHP eine Funktion die sich time() nennt. Mithilfe dieser
Funktion, werden die Sekunden ermitteln, die vom 1.1.1970 um 0:00 Uhr
bis jetzt vergangen sind. Derzeitig sind es ungefähr 1134914592
Sekunden. Diese Zahl erhöht sich also pro Sekunde immer um 1. Sollte
verständlich sein. 
Diese Zahl speichern wir nun in unserer Datenbank. Doch was nun? Was
soll ich mit dieser Zahl anstellen? Auch diese Frage ist einfach
gelöst. Die Funktion die man verwendet hat man bereits vorher schon
unbewusst verwendet. Die Funktion lautet date() (siehe oben).
Wir können unser Datum nun anzeigen lassen wie wir es wollen. Hier ein Beispiel:
PHP-Code:
$datum = date("Am d.m.Y hat *** um H:i Uhr",$zahl_aus_datenbank);
Wir können nun jederzeit die Ausgabe des Datums und der Uhrzeit ändern.
Das geht daher, weil wir nicht die Formation des Datums und der Uhrzeit
speichern sondern lediglich die Sekunden.
Also nochmal im Zusammenhang:
Wir speichern die derzeitige Zeit im time() in der Datenbank.
Wir geben unser Datum mit der Funktion date() aus.
Dadurch das wir die Sekunden speichern, ist es möglich, Datum und
Uhrzeit zweier Ereignisse zu vergleichen. Gehen wir also mal davon aus,
dass ein User um 1000 (eine geringe Zahl um das Beispiel besser
erklären zu können) einen Eintrag in einem Forum getätigt hat. Der User
muss 2 Minuten warten, ehe er erneut einen Eintrag erstellen darf.
Wie funktioniert das?
Das Ganze würde dann so aussehen:
PHP-Code:
$db_datum = $datum_aus_datenbank; if($db_datum > (time()-120)) //user darf nicht posten else //user darf wieder posten
Was haben wir hier gemacht? Wir haben überprüft, ob die Zahl in der
Datenbank größer ist als die derzeitige Zeit minus 2 Minuten (1 Minute
entspricht 60 Sekunden, also entsprechen 2 Minuten = 120 Sekunden). Ist
die Zahl in der Datenbank größer, so sind noch nicht 2 Minuten
vergangen, ist sie kleiner, so sind min. 2 Minuten vergangen und der
User darf wieder posten.
Es gibt aber noch eine weitere Funktion mit der wir die Sekunden eines
bestimmten Datums errechnen können. Diese Funktion schimpft sich mktime.
Gehen wir davon aus, dass wir die Sekunden haben wollen, die vom
1.1.1970 - 0:00 Uhr bis zum 20.01.2010 - 05:45 Uhr vergangen sind. Wir
müssen dazu folgendes der Funktion mitteilen.
PHP-Code:
echo mktime(5,45,0,1,20,2010);
Somit erhalten wir die Sekunden. Die Funktion benötigt als ersten
Parameter die Stunde, dann die Minute, Sekunde,Monat,Tag und dann das
Jahr. Beachtet hier bitte, es müssen Zahlen eingegeben werden also als
Monat "Januar" einzutragen bringt nichts. Auch bringt es nichts, als
Tag "05" reinzuschreiben. Bei einstelligen Tagen darf keine 0
vorangesetzt sein.
Das war mein kleiner Lehrgang zu den Zeiten in PHP. Macht euch die Mühe
und verwendet einfach mal die Timestamps (Begriff für die Sekunden seit
dem 1.1.1970) und schaut, welche Vorteile dies bringt.
Ich hoffe, ich konnte hiermit einigen weiterhelfen und vor großen Problemen fernhalten. 
PS: Wenn ihr irgendwo mal seht, dass die Einträge in Gästebüchern oder
sonst wo das Datum 1.1.1970 haben, dann steht bei denjenigen Einträgen
die 0 bei der Zeit. Meistens passiert dies bei Umbauten oder Fehlern in
Scripten. »
Keine Kommentare
Es gibt bisher noch keine Kommentare.
» Kommentar schreiben
|