DateTime输入在PHP中的时区之间转换

时间:2014-02-13 18:43:26

标签: php datetime timezone

我有一个抓取当地时间的输入框

date_default_timezone_set('America/Los_Angeles');
echo "<input type='datetime-local' name='fromDate' class='dates'>";

当我在输入中输入12-31-2014 10:00:00 PM

echo $_POST['fromDate'];

回复:2014-12-31T22:00:00

$test = new DateTime($_POST['fromDate']);
echo $test;

我得到2014-12-31T22:00:00 America/Los_Angeles

然后当我转换

$from_dateGMT  = new DateTime($_POST['fromDate'], new DateTimeZone('Europe/Paris'));
$from_date = $from_dateGMT->format('Y-m-d\TH:i:s');
echo $from_date;

我得到2014-12-31T22:12:00 UTC,这与上面列出的时间相同,应该增加8小时。

我做错了什么?

我不会在PHP中处理日期/时间,所以这对我来说是一次学习经历。

1 个答案:

答案 0 :(得分:1)

也许这会起作用

$test = new DateTime($_POST['fromDate'], new DateTimeZone('America/Los_Angeles'));
$test->setTimezone(new DateTimeZone('Europe/Paris'));
echo $test->format('Y-m-d\TH:i:s');

至少这是在php手册中的完成方式:{​​{3}}