2011-01-01 22 views
1

Ich versuche herauszufinden, warum php date() gibt mir die falsche Zeit und setzt die tatsächliche Zeit zurück 2 Stunden.PHP date() Funktion gibt keine korrekte Zeit

<?php echo date("Y-m-d H:i:s"); ?> 

Dies gibt 2011-01-01 03.14.04 statt 2011-01-01 05.14.04. Die Stunde wird um 2 verringert. Ich habe meine Zeitzone für Datum() nicht geändert und wenn Benutzer die Seite besuchen, möchte ich auch die Zeit für ihre Zeitzone korrigieren. Wie kann ich dies mit php arbeiten?

+0

Wo läuft Ihr Server? Was bewirkt 'echo date_default_timezone_get();' return? –

+1

mögliches Duplikat von [Aktuelle Benutzerzeit des Benutzers automatisch mit JavaScript oder PHP ermitteln] (http://stackoverflow.com/questions/863474/automatisch-detect-users-current-local-time-with-javascript-or-php) –

Antwort

1

Versuchen Sie, die die Zeitzone einstellen: date_default_timezone_set oder über das ini

Update: Sie können nicht das richtige Datum für die Benutzer festgelegt. Javascript kann damit umgehen, aber Sie müssen sich auf das System des Benutzers verlassen, um seine/ihre Zeit zu bestimmen.

2

Sie müssten entweder date_default_timezone_set() oder ein datetime Objekt verwenden, und der Benutzer müsste seine eigene Zeitzone irgendwo in einem Optionsmenü einstellen.

Ansonsten ist PHP eine serverseitige Sprache und hat keine Ahnung, wie spät es am Ende des Benutzers ist.

Sie müssten eine Client-Sprache verwenden, JavaScript. Sie können entweder nur statisch sein und die aktuelle Systemzeit des Benutzers anzeigen, oder wenn Sie aus irgendeinem Grund Zeit für PHP benötigen, können Sie AJAX-ähnliche Skripts verwenden, damit JavaScript beim Laden der Seite die Zeit in ein Skript sendet .

0

// ändern Datumsformat

$dateInfo = date_parse_from_format('m-d-Y', $data['post_date']); 
$unixTimestamp = mktime(
     $dateInfo['hour'], $dateInfo['minute'], $dateInfo['second'], 
     $dateInfo['month'], $dateInfo['day'], $dateInfo['year'] 
    ); 
$data['post_date']=date('Y-m-d',$unixTimestamp); 
1

es ist da standardmäßig zeigt es GMT-Zeit Sie können mit folgenden Code

date_default_timezone_set("Asia/Bangkok");//set you countary name from below timezone list 
    echo $date = date("Y-m-d H:i:s", time());//now it will show "Asia/Bangkok" or your date time 

Liste der unterstützten Zeitzonen für Ihre Region ändern http://www.php.net/manual/en/timezones.php