PHP-Einfach.de PHP lernen leicht gemacht

Navigation
» Startseite
» Newsübersicht
» Kontakt
» Impressum

Community
» Forum
» Gästebuch

Tutorial
» PHP Tutorial
» MySQL Tutorial
» PHP
» MySQL
» Codeschnipsel

Downloads
» Einführung
» Scripts
» Command Board

Sonstiges
» md5-Generator
» Generator
» Wissenswertes

PHP lernen


Dieses Projekt wird unterstützt von
Lichteffekte Shop

 
Partner:
PHP Forum
Mathe Nachhilfe
Suchmaschinenoptimierung

Datum nach Zeitzonen

Zurück zur Übersicht

Manchmal schreibt man ja auch Programme die eine Zeitangabe ausgeben. Beispiel ist hier ja direkt ein Forum.

Problem ist es keines hier eine Zeit auszugeben, man setzt einfach date() ein. Doch ist diese Zeit nicht für jeden gleich. Was ist wenn ich in den USA sitze und in ein Forum schaue, was auf einen Server in Deutschland gehostet wird? Dann wird mir da auch die Deutsche Zeit angezeigt. Anderesrum gibt es auch Personen
die einen Server im Ausland haben und dort nur eben Personen aus der Deutschen Zeitzone (UTC +1) schauen, so wäre da aber dann die Dortige Zeitzone relevant.

Natürlich gibt es die Funktion gmdate, welche einen Zeitstempel nach GMT/UTC Standart bearbeitet, und genau das ist der Schlüssel dazu.
Daraus entsteht eine einfache Funktion die drei Parameter braucht.
Den Zeitstempel, die Zeitzone und die Formatierung.
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<?php
function utc_date($timestamp$timezone '0'$format 'd.m.Y, H:i'$summertime false)
    {
        
$timestamp += (3600*intval($timezone));
        if(
$summertime === true)
        {
            
$timestamp += 3600;
        }
        return 
gmdate($format$timestamp);
    }
?>

In der Funktion gibt es auch nicht die Sommerzeit, diese hätte man auch Automatisch bestimmen können, aber es gibt Länder die eben keine Sommerzeit haben. (Japan wäre so eines.)
Was macht due Funktion? Ihr übergebt der Funktion einen Zeitstempel sowie die Zeitzone, Standart ist 0. Erlaubte werte wären -1 0 +1 2 2.5 usw. Also eben die Zeitzonen in Zahlenform mit + und -.
Beispiel 1:
 PHP 
1:
2:
3:
4:
5:
6:
<?php
$time 
time();
$zeitzone = +//Zeitzone Mitteleuropa

echo utc_date($time,$zeitzone);
?

Die Ausgabe wäre in diesem Fall die Aktuelle Zeit in Deutschland. Würden wir als Parameter fpr die Zeitzone 0 Einsetzten, hätten wir die Zeit in London, +9 wäre die Zeit in Tokio und -6 in New York.

Wollen wir auch noch eine eigene Zeitformatierung haben, übergeben wir einen Dritten Parameter mit der Formatierung.
 PHP 
1:
2:
3:
4:
5:
<?php
//selbe wie im Beispiel 1.
$format "d.m.Y";
echo 
utc_date($time,$zeitzone,$format);
?>

Die Ausgabe wäre in diesem Fall der Tag.Monat.Jahr, würden wir nur H:i:s übergeben würden wir die Stunden:Minuten:Sekunden bekommen.

Jetzt kann es manchmal vorkommen das es noch Sommer ist und wir eine Sommerzeit brauchen. Das können wir jetzt aber einfacher überprüfen oder dem Besucher selbst überlassen.
 PHP 
1:
2:
3:
4:
5:
6:
7:
<?php
//selbe wie im Beispiel 1 und 2
if($_POST['summertime'] == 'yes') {
$summertime true;
}
echo 
utc_date($time,$zeitzone,$format,$summertime);
?>

Wäre jetzt Winterzeit, und die Zeitzone +1, wäre die Ausgabe so, als wäre die ZEitzone +2 oder wir wären gerade in der Sommerzeit.

Ein Dank geht an einen Freund von mir. Ach ja, direkt vorweg, das ist ein Codeschnipsel den ich mal für mich angepasst habe, es gibt soviele Möglichkeiten dafür und mir sind sehr viele bekannt.
Viel Spaß damit.


Kommentare

Zurück zur Übersicht

Autor GameR

News
13.08 - » Spam im Gästebuch
Endlich Schluss mit dem Spam

08.12 - » Clanletter 2.0
Clanletter wurde komplett neu programmiert

01.09 - » Command Board 1.0 - 2.0
Das Command Board 1.0 Beta 2.0 ist erschienen


Mehr

Forum
» Entwickler Forum

» insert nach login

» Tabellenzelle zu groß







© PHP-Einfach.de 2003 - 2012