我在 PHP 中有一个 DateTime 对象。这里是:
$base = new DateTime('2013-10-21 09:00', new DateTimeZone('America/New_York'));
当我打电话时$base->getTimestamp()
,我得到了,正如预期的那样:1382360400
。
在我的项目中,我正在使用moment.js,当我告诉 moment 这个时间戳在“本地时间”时,它工作正常:
// 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
如何让 PHPDateTime
以 UTC 格式返回时间戳?我期望从中得到1382346000
,$base->getTimestamp()
这就是我这样做时得到的:
$UTC = new DateTime('2013-10-21 09:00', new DateTimeZone('UTC'));
echo $UTC->getTimestamp();
那么,如何将我的DateTime
对象转换为 UTC 并获得我想要的时间戳?
// Correct :)
moment.unix(1382346000).utc().format('LLLL') // Monday, October 21 2013 9:00 AM
(PHP 演示:https ://eval.in/56348 )