PHP に DateTime オブジェクトがあります。ここにあります:
$base = new DateTime('2013-10-21 09:00', new DateTimeZone('America/New_York'));
を呼び出すと$base->getTimestamp()
、予想どおり、 が表示されます1382360400
。
私のプロジェクトでは、moment.jsを使用しています。このタイムスタンプが「現地時間」であることを瞬間に伝えると、正常に動作します。
// Correct :)
moment.unix(1382360400).local().format('LLLL') // Monday, October 21 2013 9:00 AM
問題は、アプリの他のすべての日付が UTC である (これを除く) ため、JavaScript コードでは次のようになっていることです。
var theDate = moment.unix(timestamp).utc();
他のすべての日付では、これは機能しますが、これは機能しません。 1382360400
UTCではなく「現地時間」です。を呼び出すとsetTimezone
それが修正されると考えたので、実行しました$base->setTimezone(new DateTimeZone('UTC'));
。
呼び出すvar_dump($base)
と返されます:
object(DateTime)#1 (3) {
["date"]=>
string(19) "2013-10-21 13:00:00"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
これは正しいように見えますが、そうすると、また$base->getTimestamp()
取得1382360400
します! そうじゃない!明らかに正しい日付がわかりません。
// Incorrect :(
moment.unix(1382360400).utc().format('LLLL') // Monday, October 21 2013 1:00 PM
DateTime
PHPからタイムスタンプを UTC で返すようにするにはどうすればよいですか? 1382346000
から取得することを期待しています$base->getTimestamp()
。これは、実行したときに得られるものです。
$UTC = new DateTime('2013-10-21 09:00', new DateTimeZone('UTC'));
echo $UTC->getTimestamp();
では、オブジェクトを UTCに変換し、必要なタイムスタンプを取得するにはどうすればよいDateTime
でしょうか?
// Correct :)
moment.unix(1382346000).utc().format('LLLL') // Monday, October 21 2013 9:00 AM
(PHPデモ: https://eval.in/56348 )