Tutorials

Die schönere Zeitangabe Tutorial

Einloggen
Benutzername:
Passwort:

Passwort vergessen?
Kostenlos
Anmelden
anzeigen
Die schönere Zeitangabe
Der ein oder andere kennt bestimmt einige Seiten, wo immer steht, dass der Beitrag vor 15 Min. erstellt wurde, oder vor 4 Std. In diesem Tutorial wird geklärt wie das ganze funktioniert.

4034 - ntmb - 10.04.2010 07:17 Uhr - Version: 1 - - verlinken als BB-Code


Das Tutorial ermöglicht es die Zeitdifferenz zum jetzigen Zeitpunkt in Sekunden, Minuten, Stunden anzugeben. Natürlich wird auch gestern bzw. vorgestern zurückgegeben.

Wir benötigen den jetzigen Zeitpunkt (Timestamp), denn wir in eine Variable schreiben.
1
2
3
<?
$date
=time();
?>


Nun benötigen wir für den Fall der Fälle jeweils den Timestamp für den heutigen, gestrigen und vorgestrigen Tag, hierbei wird immer der Zeitpunkt zu 00:00 Uhr genommen.

In einem Array wird der aktuelle Monat, Tag und Jahr geschrieben, ich habe mir das in einem Array überlegt, da so weniger Variablen in der Luft umher schwirren. Mit der Funktion mktime, wird ein Timestamp des angegeben Datums zurückgegeben.
1
2
3
4
5
6
7
8
9
10
11
12
<?
$nowArray
=array(
        
date('m'),
        
date('d'),
        
date('Y')
);
$dayArray=array(
        
mktime(000$nowArray[0], $nowArray[1], $nowArray[2]), // heute
        
mktime(000$nowArray[0], $nowArray[1] - 1$nowArray[2]), // gestern
        
mktime(000$nowArray[0], $nowArray[1] - 2$nowArray[2]) // vorgestern
);
?>


Diese Funktion erwartet als Übergabeparameter ein Timestamp, der passende Wert wird von der Methode zurückgegeben.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
function getTimeAsDate($timeStamp){
        global 
$date,$dayArray;
        
$difference=$date-$timeStamp;
        if(
$difference<60)
                return 
'vor '.$difference.' Sek.';
        else if(
$difference<3600){
                
$difference=round($difference/600);
                return 
'vor '.$difference.' Min.';
        }
        else if(
$timeStamp>=$dayArray[0]){
                
$difference=round($difference/36000);
                return 
'vor '.$difference.' Std.';
        }
        else if(
$timeStamp>=$dayArray[1]){
                return 
'gestern';
        }
        else if(
$timeStamp>=$dayArray[2]){
                return 
'vorgestern';
        }
        else
                return 
date('d.m.y H:i \U\h\r'$timeStamp);
}
?>


Wie das Ganze läuft

Wie funktioniert denn eigentlich diese Methode, wird sich nun der ein oder andere stellen, das ist aber eigentlich nichts besonderes.

In der Methode werden globale Variablen definiert, damit diese in der Methode verfügbar sind.

Anschließend hangelt man sich vom der kleinsten Zeitdifferenz zur Größten durch.
Dies kannst du dir so vorstellen, als würdest du Steine nach der Größe sortieren, hierfür würdest du ein Sieb nehmen, wenn du zu Anfang schon das gröbste Siebs nehmen würdest, so würden alle Steine durchfallen und die Aufgabe wäre gescheitert. Daher muss man sich vom Feinen zum Groben durchtasten.

Einige stellen sich sicherlich die Frage, warum ich nicht einfach alles in eine Methode geschrieben hab.
Dies ist einfach zu erklären, die Variablen besitzen zum Aufruf stets die gleichen Werte, also warum sollte der Computer diese bei jedem Methoden-Aufruf neu erstellen/berechnen. Der schöne Nebeneffekt des ganzen ist auch, dass das Script schneller durchläuft, da die Timestamps nur einmal berechnet werden müssen und anschließend nur angesteuert werden.

Über Kommentare/Feedback würde ich mich natürlich freuen.

Mitglieder-Kommentare


#3 von ntmb
Danke Smily NR:8

Ich will das die Tutorial-Sektion mit Qualität punktet.

Zumal muss ich meine Fähigkeit etwas zu Erklären noch mehr verbessern/ausbauen. ^^
Der freundliche Admin aus der Nachbarschaft
Lachecke.de - Dein täglicher Lacher im Internet
Listrank.de - Die ultimative Topliste nach Themen
#2 von zerfleischer
Eugen also ich muss sagen das du es sehr schön erklärt hast. vorallem die stelle:
Zitat:
als würdest du Steine nach der Größe sortieren, hierfür würdest du ein Sieb nehmen, wenn du zu Anfang schon das gröbste Siebs nehmen würdest, so würden alle Steine durchfallen und die Aufgabe wäre gescheitert

Bin ja Kieskutscher und wenn es andersrum sein würde dann würde ich ja nur irgendwas fahren Smily NR:8

Wie gesagt, N1 TUT^^

+1

Die Gymnasiasten sind so blöd.... die rechnen mit Buchstaben
#1 von hyhley
Fein, schönes Script und echt könnte eine nützliche Spielerei sein. Wenn ich wieder mehr Zeit habe werde ich mich um meine Programmier Kenntnisse weiter kümmern.

Aber klasse das hier so einfach erklärt wird. Vielen Dank !!

Nur registrierte Mitglieder könnten einen Kommentar schreiben.

Melde dich doch ganz einfach an, es ist kostenlos. :-)