Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
 
 
 

[Tutorial] Arbeiten mit Unix-Zeitstempeln, date(), strftime() und mktime

Sie befinden sich: Home > Webmaster News

Arbeiten mit time()

Mit $zeit = time weisen Sie der Variablen $zeit den aktuellen Unix-Zeitstempel zu. Wenn Sie die Zeit nun mit echo $zeit ausgeben wollen, so werden Sie nur eine Zahl sehen, z.B. so: 1219947989

time() beinhaltet die Anzahl der Sekunden, die seit dem 1.1.1970 vergangen sind. Der Zeitstempel 0 bedeutet also den 1.1.1970 0:00:00 Uhr Greenwich Zeit bzw. 1:00:00 Uhr deutscher Zeit. Der Zeitstempel 1 bedeutet 1.1.1970 0:00:01 Uhr usw.

PHP stellt sehr mächtige Befehle zur Verfügung, mit denen man die time()-Zahl in ein lesbares Format umwandeln kann. Hier wollen wir die wichtigsten vorstellen:

Die allgemeine Formel lautet date('string'[,Unix-Zeitstempel]);

Wenn wir den zweiten Parameter weglassen, so wird der aktuelle Zeitstempel genommen.

<?php
$zeit = time();
/* Beide Ausgaben sind gleich */
echo date('j'); 
echo date('j',$zeit);
?> 



Die date-Anweisung nimmt immer nur einen einzigen Parameter entgegen und liefert den passenden Wert. date() nutzt man daher oft dann, wenn das Ergebnis im Programm weiterbenutzt werden soll. Dazu ein Beispiel:

date('w') liefert den Tag der Woche als Zahl: 0 ist Sonntag, 1 ist Montag usw.

Wollen Sie also den aktuellen Wochentag-namen ausgeben, so können Sie den von date('w') gelieferten Wert als Index eines Arrays mit den Wochentagen benutzen:


<?php
$wochentage = array('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
$tagnummer = date('w');
echo $wochentage[$tagnummer];
?> 



Braucht man hingegen den Namen des Wochentages in englischer Sprache, so kann man das direkt ausgeben lassen: date('l') - ein kleiner Buchstabe L - liefert Sunday, Monday, Tuesday usw.

Hier eine Liste der wichtigsten Steuerbuchstaben für date():

d - Tag des Monats, zwei Ziffern mit führenden Null (z.B. "05")
j - Tag des Monats ohne führenden Null ("1" bis "31")
w - Tag der Woche, Ausgabe als Zahl ("0" für Sonntag)
H - Stunde im 24-Stunden-Format mit führender Null ("00" bis "23")
G - Stunde im 24-Stunden-Format ohne führende Null ("0" bis "23")
i - Minuten ("00" bis "59")
m - Monat mit führender Null ("01" bis "12)
n - Monat ohne führende Null ("1" bis "12)
s - Sekunden ("00" bis "59")
t - Anzahl der Tage des Monats ("28" bis "31")
Y - Jahr, vierstellige Ausgabe (z.B. "2001")
y - Jahr, zweistellige Ausgabe (z.B. "01")
z - Tag im Jahr ("0" bis "365")


Die restlichen Codes werden weniger genutzt:

a - amerik. Tageszeit, klein geschrieben ("am" oder "pm")
A - amerik. Tageszeit, groß geschrieben ("AM" oder "PM")
D - Tag der Woche mit drei Buchstaben in englisch (z.B. "Mon")
l (kleines L) - Tag der Woche, ausgeschrieben ("Monday")
F - Ausgeschriebener Monat (z.B. "December")
h - Stunde im 12-Stunden-Format mit führender Null ("01" bis "12")
g - Stunde im 12-Stunden-Format ohne führende Null ("1" bis "12")
M - Monat mit drei Buchstaben (z.B. "Dec")
S - Suffix der engl. Ordnungszahlen (z. B. "st","nd")
U - Sekunden seit Beginn der Unix-Epoche
Z - Offset der Zeitzone gegenüber GMT in Minuten (z.B. "-43 200")
B - Swatch-Internet-Zeit
I - Sommerzeit ("1" bei Sommerzeit, sonst "0")
L - Schaltjahr ("1" bei Schaltjahr, sonst "0")
T - Zeitzoneneinstellung des Servers (z.B. "CET" für "Central European Time")


Will man ein Datum formatiert ausgeben, so gibt es hierfür eine spezielle Funktion:

strftime("Formatierungsstring", ["Unix-Timestamp"])

In die Klammern schreiben wir eine Zeichenkette mit beliebigem Inhalt und Platzhaltern für Zeitinformationen. Anders als bei date bestehen die Platzhalter aus dem Prozentzeichen und einem Buchstaben, wobei dummerweise gleiche Funktionen nicht immer mit dem gleichen Buchstaben wie im date-Befehl erreicht werden.

Auch hier können Sie als zweiten Parameter einen Unix-Zeitstempel einfügen. Wird dieser weggelassen, dann arbeitet strftime mit der aktuellen Unix-Zeit.

Angenommen dass jetzt grade der 6.7.2008 12:13:14 ist, dann bekommen wir mit
echo strftime("%d") die Ausgabe 07 (Tag des Monats mit führender 0),
echo strftime("%H") die Ausgabe 12 (Stunde 00 bis 23),
echo strftime("%M") die Ausgabe 13 (Minuten)


Andere Zeichen werden unverändert ausgegeben, sodass Sie mit
echo ("%Y-%m-%d %H:%M:%S" ) die Ausgabe 2008-07-06 12:13:14 erhält.

Hier die verfügbaren Platzhalter:

%a - Wochentag, abgekürzt (z.B. "Mon")
%A - Wochentag, ausgeschrieben (z.B. "Monday")
%b - Monat, abgekürzt (z.B. "Jan")
%B - Monat, ausgeschrieben (z.B. "January")
%c - Vollständige Datum- und Zeitausgabe nach lokalen Einstellungen
%d - Tag des Monats, mit führender Null ("01" bis "31")
%H - Stunde im 24-Stunden-Format ("00" bis "23")
%I - Stunde im 12-Stunden-Format ("01" bis "12")
%j - Tag im Jahr ("001" bis "366")
%m - Monat, ohne fürhrende Null ("1" bis "12)
%M - Minuten ("0" bis "59")
%p - amerikanische Tageszeit ("am" oder "pm")
%S - Sekunden ("0" bis "59")
%U - Wochennummer, erste Woche beginnt am ersten Sonntag im Jahr
%W - Wochennummer, erste Woche beginnt am ersten Montag im Jahr
%w - Wochentag als Zahl ("0" für Sonntag bis "6" für Samstag)
%x - Vollständige Datumsausgabe nach lokalen Einstellungen
%X - Vollständige Zeitausgabe nach lokalen Einstellungen
%y - Jahr, zweistellig (z.B. "98")
%Y - Jahr, vierstellig (z.B. "1998")
%Z - Differenz zur Zeitzone in Sekunden




Wenn Sie auf die Funktionalitäten, die date()- und strftime() bieten, zurückgreifen möchte, müssen Sie eine datum/Uhrzeit-Kombination, die in einem anderen Format vorliegen, in das timestamp-Format umwandeln. Dies erledigt die Anweisung mktime()

mktime() erwartet 6 Parameter und liefert einen Zeitstempel. Hier ein Beispiel:


<?php
$tag = 14;
$monat = 7;
$jahr = 2008;
$stunde = 14;
$minute = 49;
$sekunde = 35;

$zeitstempel = mktime($stunde,$minute,$sekunde,$monat,$tag,$jahr);

?> 



Achten Sie darauf, dass der Monat vor dem Tag stehen muss.

(Autor: WolfgangWolfgang), Eingetragen am 28.08.2008


Schreib ein Kommentar

Name
Mail
Webseite
Kommentar