我将UNIX时间戳从javascript vat stamp = +new Date/1000
发送到PHP。
然后我做
//Here $d = '2015/04/03 00:00:00'
$d = new DateTime("@{$stamp}");
$d->setTimezone( new DateTimeZone( 'Pacific/Auckland' ) );
//Here $d = '2015/04/03 00:00:00' + 7:15 hrs ( 7:15 hrs is time diff between my browser & Auckland)
我想更改时区,但保持日期不变。所以,在我setTimezone
到Pacific/Auckland
之后,日期应该仍然是'2015/04/03 00:00:00'
。
这里有一种方法。
$_date = new 'DateTime($date->format('Y-m-d H:i:s'), new 'DateTimeZone('<time zone>'));
我需要指出,你在要求一些荒谬的东西。UNIX时间戳表示绝对时间点。它不代表"2015/04/03 00:00:00",因为日期格式可以指几十个不同的时间点,这取决于您在哪个时区中解释此字符串。UNIX时间戳没有这个问题,它代表的时间点是不可基于时区协商的。
如果你取一个绝对时间点,并希望将其格式化为取决于时区的人类可读时间,那么这个人类可读的值必然会通过应用不同的时区来改变。你所要求的是改变时间戳所指的时间点,在这一点上它是任意的。