2016-05-21 3 views
0

Dies ist die Codierung und es ist Echo mit dem richtigen Format, aber die Tatsache, dass das Datum beim Ausdruck falsch ist.php Datum stimmt nicht mit der Datenbank überein?

Ausgang: 31 Dez 1969 19:33

Datenbank Timestamp 2016-05-20 21:53:17

<?php 
date_default_timezone_set('ECT'); 
$timestamp = 1456778973; 
echo date('d M Y H:i',$row['timestamp']); 
?> 

und ich habe versucht, tun Sie das Datum auf verschiedene Arten und immer noch das gleiche Ergebnis

+1

Datenbank Datetime-Felder sollten immer als UTC ausgefüllt werden, Sie dann addieren/subtrahieren die Zeitzone versetzt. Verwenden der DateTime-Klasse –

+0

Würdest du wissen, was der Offset wäre? für Berg Standardzeit? – RKGaming

+0

Bergzeit -> 'Amerika/Denver' Bergzeit (kein DST) ->' Amerika/Phoenix' –

Antwort

2

In der Codebeispiel Sie gebucht, $row['timestamp'] wurde nicht festgelegt, daher wird das Datum mit dem Zeitstempel 0, der auch als Epoche bezeichnet wird, oder dem Datum erstellt, das wiederholt wird.

Wenn Sie es wie folgt ändern, sollte es funktionieren:

<?php 
date_default_timezone_set('ECT'); 
$timestamp = 1456778973; 
echo date('d M Y H:i', $timestamp); ?> 

Randbemerkung: Zeitzone ECT ist keine gültige Zeitzone Code in PHP. Wenn ich richtigerweise meine, dass Sie europäische Zentralzeit meinen, müssten Sie stattdessen CET angeben.

+0

Ich möchte den Zeitstempel von der Datenbank zur Verfügung gestellt werden, deshalb hatte ich die $ row ['timestamp'] und ich versuchte, es zur östlichen zentralen Zeit für die Ostküste zu setzen – RKGaming

+1

@RKGaming Gut, aber in dem Skript, das Sie teilten, wurde '$ row' nicht gesetzt. – Timo

+0

Um auf die östliche Zeitzone der USA zu verweisen, sollten Sie den Zeitzonencode 'America/New_York' verwenden. – Timo

1

ECT existiert nicht als eine gültige TimeZone, meinst du CET vielleicht?
Der richtige Weg, dies zu tun, ist mit der DateTime Klasse, das heißt:

$date = new DateTime(); 
$date->setTimestamp(1456778973); 
$tz = new DateTimeZone("America/Denver"); 
$date->setTimezone($tz); 
echo $date->format('d M Y H:i'); 

PHPFiddle Demo


Hinweis:

Daten immer als UTC in DB gespeichert werden sollen (Zeitstempel aka Unix-Zeit), dann können Sie den Zeitzonen-Offset mit deraddieren oder subtrahieren 0 Klasse.


Möchten Sie wissen, was das für Bergstandardzeit ausgeglichen werden würde?

Mountain Time: America/Denver
Mountain Time (kein DST): America/Phoenix

List of Supported Timezones

+0

Ich möchte den Zeitstempel auf den Datenbank-Zeitstempel setzen – RKGaming

+0

Es gibt keine Möglichkeit, @RKGaming mit einem ganzzahligen Zeitstempel zu machen. Es ist keine Zeitzone damit verbunden. Sie können timestamp/datetime-Felder ausprobieren –

+0

Vergangene Daten sollten als UTC gespeichert werden, aber oft sollten zukünftige Daten in ihrer lokalen Zeitzone gespeichert werden. Andernfalls erhalten Sie ein unerwartetes Verhalten, falls sich die Zeitzone ändert. Wenn ich dich am nächsten Mittwoch um 14 Uhr treffen möchte, aber meine Regierung die Sommerzeit plötzlich absagt, sollte dies unsere (lokale) Besprechungszeit nicht beeinflussen. – Evert

Verwandte Themen