2016-07-09 10 views
1

Ich muss einen Weg finden, ein Benutzer spezifizierte Datum und Zeit in einen GMT Zeitstempel umzuwandeln.Konvertieren von Datum in GMT Zeitstempel

die Antwort von Mahdi Nach here, ich bin mit dem folgenden Code, um die Umwandlung

$date = new DateTime("09 Jul 2016 18:00:00"); 
echo gmdate('Y-m-d H:i:s', $date->getTimestamp()); 

Welche

2016-07-09 16:00:00

kehrt zum Prototyp

Wie die Antwort sein soll, ist

2016-07-09 17:00:00

Da andere Quellen über mit denen ich gearbeitet habe, dass die GMT-Zeit 1 Stunde hinter der lokalen Zeit ist, wo ich wohne (UK).

Irgendwelche Ideen, warum dieses eigenartige Verhalten geschieht?

+0

'$ date = new Datetime (" 9. Juli 2016 18: 00:00 ", neue DateTimeZone ('UTC')); echo $ date-> format ('U'); ' –

+0

Wenn ich das zu 'Ymd H: i: s' formatiere, gibt es den Zeitstempel von 2016-07-09 18:00:00, der gleichzeitig ist .. – Umair

+0

Sie haben nach dem Zeitstempel gefragt, stellen Sie sicher, dass Sie Ihre Zeitzone richtig eingestellt haben, wenn Sie das auf einen menschlichen formatierten Tee/Zeit Wert rendern –

Antwort

0

Sie legen die Zeitzone nie auf UTC fest. . Außerdem ist es nicht notwendig, DateTime Funktionalität mit anderen PHP Datumsfunktionen wie DateTime hat alle Werkzeuge mischen müssen Sie gebaut in

$date = new DateTime("09 Jul 2016 18:00:00", new DateTimeZone('Europe/London')); 
$date->setTimezone(new DateTimeZone('UTC')); 
echo $date->format('Y-m-d H:i:s'); 

Demo

+0

Dies gibt '2016-07-09 16: 00: 00' was ich war anfänglich bekommen. – Umair

+0

Meine Demo sagt etwas anderes –

+0

Ihre letzte Bearbeitung (um die 'DateTimeZone' auf' Europa/London' zu setzen) hat es ** gefixt **! Wenn die Anwendung, die ich erstelle, an anderen Orten auf der Welt verwendet werden soll, gibt es eine Möglichkeit, diesen Teil dynamisch zu machen? – Umair