SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 21.03.2010, 00:07:42
SyLo SyLo ist offline
Anfänger
 
Registriert seit: Mar 2010
Alter: 35
Beiträge: 2
Das leidige Thema Zeitzonen :)

Guten Abend allerseits,

ich habe mich in den letzten Tagen mit dem Thema PHP/MySQL und Zeitzonen befasst und bisher nur passiv in Foren mitgelesen, und habe jetzt noch eine Verständnisfrage, die ich mir so leider noch nicht beantworten konnte.
Da ich eine Webanwendung gestalte, die ggf. auf verschiedenen Servern in verschiedenen Zeitzonen laufen soll, geht es hauptsächlich um das Speichern der Zeit inklusive Zeitzone.

Ich bin jetzt zum Schluss gekommen, dass es wohl am einfachsten ist, per date_default_timezone_set('UTC'); sicherzustellen, dass beim Speichern der Zeitzone immer UTC verwendet wird (Voraussetzung: Serverzeit/Zeitzone muss richtig eingestellt sein - ist sie auch).
So kann ich also SICHER sein, dass alle zeiten, die im System bzw. in der Datenbank irgendwie vorkommen, UTC sind.

Ich habe mir dazu zum Testen gerade ein kleines Script geschrieben und bin jetzt etwas verwundert:

PHP-Code:
<?php
    
// Speichern
    
date_default_timezone_set('UTC');
    
$zeit mktime(22,33,44,03,20,2010);
    echo 
date("H:i:s"$zeit); //Ausgabe: 22:33:44

    
echo "<br>";

    
// Umrechnen
    
date_default_timezone_set('Europe/Berlin');
    
$jetzt date("H:i:s"$zeit);
    echo 
$jetzt//Ausgabe: 23:33:44
?>
Ich mache hier nichts weiter, als einfach eine Zeit zu "erfinden", anschließend die Zeitzone zu ändern und die zuvor gespeicherte Zeit weder auszugeben.
Was mich wundert, sind die Ausgaben, die geliefert werden.
Woher weiß PHP von der unterschiedlichen Zeitzone?
Gehe ich richtig in der Annahme, dass PHP erkennt, dass die Zeit vorher im gleichen Script in einer anderen Zeitzone abgespeichert wurde?
Oder anders gefragt: Wenn meine $zeit aus einer MySQL-Abfrage kommt, würde sie dann auch umgerechnet werden?
Das würde ja voraussetzen, dass die Zeitzone mitgespeichert wurde.

Wäre um eine Auskunft sehr dankbar! :-)

Liebe Grüße
SyLo
Mit Zitat antworten
  #2  
Alt 21.03.2010, 08:53:44
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
AW: Das leidige Thema Zeitzonen :)

Zitat:
Zitat von SyLo Beitrag anzeigen
...
PHP-Code:
<?php
.
.
.
    
date_default_timezone_set('UTC');
.
.
.
    
date_default_timezone_set('Europe/Berlin');
.
.
.
?>
...
Woher weiß PHP von der unterschiedlichen Zeitzone?
...
Hallo SyLo,
Du hast Dir die Antwort eigentlich schon selbst gegegben.
Lese Dir doch mal die Beschreibung im Manual genauer durch: http://www.php.net/manual/de/functio...mezone-set.php


Kai aka Knight1
Mit Zitat antworten
  #3  
Alt 21.03.2010, 18:44:59
SyLo SyLo ist offline
Anfänger
 
Registriert seit: Mar 2010
Alter: 35
Beiträge: 2
AW: Das leidige Thema Zeitzonen :)

Dieses Manual habe ich jetzt schon des öfteren durchgelesen.
Die essenzielle Frage, um die es mir geht, wird darin aber leider nicht eindeutig beantwortet:

Zitat:
Zitat von SyLo Beitrag anzeigen
Oder anders gefragt: Wenn meine $zeit aus einer MySQL-Abfrage kommt, würde sie dann auch umgerechnet werden?
Mit Zitat antworten
  #4  
Alt 21.03.2010, 19:30:08
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
AW: Das leidige Thema Zeitzonen :)

Hi SyLo,
sorry, habe manchmal ein Problem mit dem genauen lesen eines Posts.
Zitat:
Zitat von SyLo Beitrag anzeigen
...
PHP-Code:
<?php
#Hier gilt die Zeitzone die in der php.ini welche zur Konfiguration als Default geladen wurde; Soweit ich weiß die System-Zeitzone die bei der Installation eingestellt war.
date_default_timezone_set('UTC');
#Hier gilt UTC; Alles was mit Datum und Uhrzeit passiert, passiert auf UTC-Basis.
date_default_timezone_set('Europe/Berlin');
#Ab hier gilt dann "Europe/Berlin"; Alles was jetzt mit Datum und Uhrzeit passiert, passiert auf dieser Basis; Zumoindest die Ausgabe.
?>
...
Was mich wundert, sind die Ausgaben, die geliefert werden.
...
Man achte auf meine Kommentare im Code-Block.

Zitat:
Zitat von SyLo Beitrag anzeigen
...
PHP-Code:
<?php
.
.
.
echo 
date("H:i:s"$zeit); //Ausgabe: 22:33:44
.
.
.
date_default_timezone_set('Europe/Berlin');
$jetzt date("H:i:s"$zeit);
echo 
$jetzt//Ausgabe: 23:33:44
?>
...
Wie Du siehst ist die Ausgabe der Zeit auf Basis der Zeitzone "Europe/Berlin" der Ausgabe der Zeit auf Basis der Zeitzone "UTC" um eine Stunde voraus.
Das hängt damit zusammen dass UTC auf der GMT (Greenwich Mean Time) basiert, der Position des Nullmeridian.
Die Zeitzone "Europe/Berlin" entspricht (momentant) in unserem "normalen" Zeitzoneverständnis der MEZ (Mitteleuropäische Zeit). Im Sommer ist dies die MESZ (Mitteleuropäische Sommerzeit). Dann sind es zwei Stunden. Anstelle UTC+1 im Winter also UTC+2 im Sommer.

Zitat:
Zitat von SyLo Beitrag anzeigen
...
Gehe ich richtig in der Annahme, dass PHP erkennt, dass die Zeit vorher im gleichen Script in einer anderen Zeitzone abgespeichert wurde?
...
Nein, solange Du PHP nicht explizit per date_default_timezone_set(); mitteilst dass es mit einer bestimmten Zeitzone arbeiten soll wird es immer die in der php.ini verwenden.
Ab einer 5er-Version spuckt PHP eine Warnung aus, dass es unsicher sei ohne die Festlegung einer Zeitzone die Funktion date(); zu nutzen.

Zitat:
Zitat von SyLo Beitrag anzeigen
...
Oder anders gefragt: Wenn meine $zeit aus einer MySQL-Abfrage kommt, würde sie dann auch umgerechnet werden?
...
MySQL nutzt soweit ich weiß seine eigenen Zeitzonensettings.
Ich habe mich noch nicht damit beschäftigt.
Bisher habe ich immer die Datums- und Zeitwerte einfach abgespeichert und abgerufen ohne darauf zu achten ob eine gemeinsame Zeitzone für die Verbindung zwischen Webserver (wo PHP ausgeführt wird) und dem Datenbankserver definiert werden muss/sollte. Das werden andere besser beantworten können.

Zitat:
Zitat von SyLo Beitrag anzeigen
...
Das würde ja voraussetzen, dass die Zeitzone mitgespeichert wurde.
...
Es ist ja kein Problem diese Information in einem zusätzlichen Feld in der Tabelle zu speichern.


Kai aka Knight1
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Podcast zum Thema PHP? Stefan Henschke Off Topic Area 0 09.12.2008 19:19:10
Sie haben dieses Thema abonniert Mod-Rewrite Problem - Typo ignoriert Rule ksticker Off Topic Area 0 20.09.2008 20:58:34
checkboxen das leidige thema... strubel123 PHP Grundlagen 7 05.06.2004 12:21:29
Wehleidiges Thema MS Access tobiasl PHP für Fortgeschrittene und Experten 4 21.05.2003 07:47:13


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


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt