PHP: DateTime::createFromFormat() with timezone



我想将日期形式从d/m/Y转换为带时区偏移的Y-m-d。我可以用下面的代码将d/m/Y转换为Y-m-d:

$date = DateTime::createFromFormat('d/m/Y', $date);
$date = $date->format('Y-m-d');

但我不确定如何添加时区偏移

(PHP 5>= 5.3.0)输入第三个参数

公共静态DateTime DateTime::createFromFormat(字符串$format,string $time[, DateTimeZone $timezone])

$date = DateTime::createFromFormat('d/m/Y', $date, new DateTimeZone('Europe/Berlin'));

就用DateTime::setTimeZone():

$date = DateTime::createFromFormat('d/m/Y', $date);
$date->setTimeZone(new DateTimeZone('America/New_York'));
$date = $date->format('Y-m-d');

我测试了JohnConde和去噪两种解决方案。

$format = 'Y-m-d H:i:s';
$datetime_str = '2022-10-28 17:24:00';
$timezone_str = 'Europe/Rome';
$dt_test_denoise = DateTime::createFromFormat($format, $datetime_str, 
                                         new DateTimeZone($timezone_str));
echo '$dt_test_denoise:';
echo "<br/>";
var_dump($dt_test_denoise);
echo "<br/>";
echo "<br/>";
$dt_test_JohnConde = DateTime::createFromFormat($format, $datetime_str);
$dt_test_JohnConde->setTimeZone(new DateTimeZone($timezone_str));
echo '$dt_test_JohnConde:';
echo "<br/>";
var_dump($dt_test_JohnConde);
echo "<br/>";
echo "<br/>";

在http://phptester.net/上执行该命令,您将看到不同之处。

我认为最好的解决方案是去噪!

最新更新