Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Zeitzone berücksichtigen - Was mache ich falsch? (https://www.delphipraxis.net/118916-%5Bphp%5D-zeitzone-beruecksichtigen-mache-ich-falsch.html)

jfheins 7. Sep 2008 16:11

Re: [PHP] Zeitzone berücksichtigen - Was mache ich falsch?
 
Zitat:

Zitat von Matze
Kann man dagegen etwas tun? Denn time() wäre ja wieder nur die Serverzeit und nicht GMT.

Grüße

Hmm.... Wie wäre es damit: time() - date('Z') Sollte ähnliches tun ^^

Und die zweite Meldung bekommst du weg, wenn du abfragst, ob es die funktion gibt, und dann ggf. aufrufst ..


Oder rede ich da jetzt totalen Müll? :drunken:

alcaeus 7. Sep 2008 16:20

Re: [PHP] Zeitzone berücksichtigen - Was mache ich falsch?
 
Moin,

error_reporting einfach auf E_ALL (ist bei PHP5 noch ohne E_STRICT) stellen, und das wars:
Code:
error_reporting(E_ALL);
Greetz
alcaeus

Matze 7. Sep 2008 16:27

Re: [PHP] Zeitzone berücksichtigen - Was mache ich falsch?
 
@Julius: Hm, das funktioniert bei mir leider nicht. Lokal ich bei mir time() das gleiche wie gmmktime() und date('Z') aber trotzdem 7200. :?

@Andy: Klar, dann sind die Fehler/Warnungen unterdrückt, aber das ist auch nicht das, was ich eigentlich gerne hätte. Das ist ja fast wie ein

Delphi-Quellcode:
try
  // ...
except
end;
*g*

jfheins 7. Sep 2008 16:31

Re: [PHP] Zeitzone berücksichtigen - Was mache ich falsch?
 
Aber ist time() nicht gmtUTC ??

Matze 7. Sep 2008 16:32

Re: [PHP] Zeitzone berücksichtigen - Was mache ich falsch?
 
Normalerweise müsste time() die am Server eingestellte Zeitzone verwenden (wenn nicht per PHP anders gesetzt).
Daher sehe ich das gerade als etwas widersprüchlich ein, weil date('Z') eine Differenz vorgibt.

jfheins 7. Sep 2008 16:34

Re: [PHP] Zeitzone berücksichtigen - Was mache ich falsch?
 
Könnte es nicht sein, dass date(Z) genau die differenz angibt, die du aufaddieren musst, um aus time() die lokale zeit zu machen?

In der Doku von time() steht zumindest was von gmt ;)

alcaeus 7. Sep 2008 16:59

Re: [PHP] Zeitzone berücksichtigen - Was mache ich falsch?
 
Zitat:

Zitat von Matze
@Andy: Klar, dann sind die Fehler/Warnungen unterdrückt, aber das ist auch nicht das, was ich eigentlich gerne hätte. Das ist ja fast wie ein

Delphi-Quellcode:
try
  // ...
except
end;
*g*

Nicht ganz. Ich zitiere mal die PHP-Doku:
Zitat:

Run-time notices. Enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code.
Der weisst dich darauf hin, dass es time() spaeter vielleicht irgendwann nicht mehr geben koennte. Mehr macht der auch nicht. Es ist also kein Fehler oder ne Warnung per se, sondern ein Vorschlag darauf zu verzichten, wenn dein Code spaeter ohne groessere Umbauten verwenden willst. That said, wenn du es trotzdem anders machen willst:

Code:
$utc_time = time() - date('Z') - (date('I') * 3600);
Greetz
alcaeus

jfheins 7. Sep 2008 17:05

Re: [PHP] Zeitzone berücksichtigen - Was mache ich falsch?
 
Zitat:

Zitat von alcaeus
Der weisst dich darauf hin, dass es time() spaeter vielleicht irgendwann nicht mehr geben koennte.

Andersrum (gmmktime könnte es bald nicht mehr geben), aber ist nicht so wichtig ;)


Zitat:

wenn du es trotzdem anders machen willst:

Code:
$utc_time = time() - date('Z') - (date('I') * 3600);
Greetz
alcaeus
Könnte es nicht vielleicht doch sein, dass time bereits gmt-Zeit zurückgibt?

alcaeus 7. Sep 2008 17:08

Re: [PHP] Zeitzone berücksichtigen - Was mache ich falsch?
 
Zitat:

Zitat von jfheins
Könnte es nicht vielleicht doch sein, dass time bereits gmt-Zeit zurückgibt?

Ja...aber auch nur dann, wenn die Zeitzone entsprechend eingestellt ist. Kann man uebrigens auch in der php.ini machen. Wie dem auch sei, dann sollte aber auch date('Z') 0 zurueckliefern ;)

Greetz
alcaeus

Matze 7. Sep 2008 17:15

Re: [PHP] Zeitzone berücksichtigen - Was mache ich falsch?
 
Also nun verstehe ich gar nichts mehr.

Das hier:

Code:
$utc_time = time() - date('Z') - (date('I') * 3600);
echo date('d.m.Y G:i:s',$utc_time).' (utc von Andy)
';
date_default_timezone_set('Europe/Berlin');
echo date('d.m.Y G:i:s').' (Berlin)
';
date_default_timezone_set('Europe/London');
echo date('d.m.Y G:i:s').' (London)
';
echo date('d.m.Y G:i:s', time()) . ' (time)';
liefert mir

Code:
07.09.2008 15:17:38 (utc von Andy)
07.09.2008 18:17:38 (Berlin)
07.09.2008 17:17:38 (London)
07.09.2008 17:17:38 (time)
In Berlin ist normalerweise GMT+1 und im Sommer GMT+2. Aber Andys Zeit wäre dann ja GMT-1 (oder falls UTC = GMT eben UTC-1). :freak:

Edit:
Code:
echo date("d.m.Y G:i:s Z", 0);
liefert
Code:
01.01.1970 1:00:00 3600
Daher schließe ich daraus, dass irgenwas GMT+1 (= Serverzeitzone) sein muss, sonst stünde da 00:00:00, aber ich weiß auch nicht so genau. Das ist alles irgendwie unlogisch.

Edit 2:
Nun verstehe ich noch weniger. Julius' Vorschlag mit

Code:
time() - date('Z')
liefert nun das korrekte Ergebnis. date() bzw time() enthält somit die Serverzeitzone inklusive Sommerzeit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz