date() Zeitsprung: USA -> Ö/D
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
code
date
endeffekt
format
frage
funktion
gesucht foren
haufe
last
leitung
login
mensch
offset
sommerzeit
string
stunden
uhr
url
zeitangabe
zeitzone
-
ho ;)
Ich habe gerade für meine Seite eine "Last Login" Information geschrieben...
(Ich weiß, dass das nichts aufwendiges ist, aber da ich kaum was von PHP verstehe, bin ich richtig stolz, dass ich es alleine - ganz ohne persönliche Hilfe - geschafft habe XD )
Doch kaum funktioniert das ganze, kam auch schon die erste böse Überraschung...
Der Serve, auf dem ich arbeite, steht in den USA, dementsprechend sieht auch das Ergebnis der date() Funktion aus...
Die Zeit liegt einfach um 9h zurück.
(Ein Login vom 13.6. um 17:30 (Österreichische / Deutsche Zeit) wird als Login vom 13.6. um 8:30 (Zeit in den USA) angezeigt...)
Meine Frage: Wie sage ich der Date Funktion (mit möglichst wenig Aufwand), dass sie mir 9 Stunden dazu zählen soll?
lg
Sincer -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
php.net empfiehlt für dein Problem die Verwendung von gmdate()
string gmdate ( string $format [, int $timestamp ] )
Identisch zur Funktion date(), ausgenommen dass die zurückgegebene Zeitangabe Greenwich Mean Time (GMT) entspricht.
FF -
ho ;)
Fast...
Habe mich gerade eingeloggt...
Dein letzter Login war am 13.06.2009 um 15:51:40.
Also entweder geht die Uhr am Server vom 2 Stunden nach... oder da fehlt noch was...
Muss ich noch etwas beachten?
Oder kann die Serverzeit von einem (ich behaupte einmal professionellem, oder zumindest teuren *g*) wirklich falsch sein?
//EDIT: Mensch, ich bin da voll auf der Leitung gestanden... klar fehlen da noch 2h ^^
Also nur noch die Frage: Wie kann ich die dazu rechnen?
lg
Sincer
Beitrag zuletzt geändert: 13.6.2009 18:13:39 von sincer -
In den Diskussionen zu gmtime() bei php.net findet sich eine passende Function:
<?php function actual_time($format,$offset,$timestamp){ //Offset is in hours from gmt, including a - sign if applicable. //So lets turn offset into seconds $offset = $offset*60*60; $timestamp = $timestamp + $offset; //Remember, adding a negative is still subtraction ;) return gmdate($format,$timestamp); } ?>
Das müßte man jetzt nur noch um eine automatische Erkennung der Sommerzeit erweitern, dann wäre es perfekt. ;)
FF -
Hi,
ich nehme mal an dass bei dir einfach noch die Zeitzone falsch eingestellt ist
Versuch mal folgendes:
<?php // date_default_timezone_set('America/Los_Angeles'); date_default_timezone_set('Europe/Berlin'); echo date("F j, Y, g:i a")."<br />\n"; echo gmdate("F j, Y, g:i a")."<br />\n"; ?>
Dann werden auch automatisch die Werte von DATE angepasst gmdate() gibt hingegen immer GMT+0 zurück.
Grüßle
Beitrag zuletzt geändert: 15.6.2009 11:10:04 von scout -
ho ;)
scout schrieb:
ich nehme mal an dass bei dir einfach noch die Zeitzone falsch eingestellt ist
Mensch, Scout, ich hätte mir einen Haufen Zeit erspart, hätte ich wieder einmal in diesen Thread gesehen XD
Ich hab herum Gegoogelt, gesucht, Foren durchstöbert, und mich bei PHP.net dumm und dämlich gelesen... (Wenn man kaum PHP kann, ist das alles kryptisch, und man kann nur durch Probieren seine Erfahrungen machen...)
Im Endeffekt bin ich genau auf das gekommen, was du da postest ^^
<?php date_default_timezone_set('Europe/Berlin'); $datetime = date_create(date('d.m.Y H:i:s')); // Testweise eine Ausgabe: echo date_format($datetime, 'd.m.Y H:i:s'); ?>
(Das Gleiche, nur ein bisschen anders Formatiert...)
Endlich geschafft... und es funktioniert sogar XD
Vielen Dank auf jeden Fall :)
lg
Sincer -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage