试图将javascript日期时间字符串转换为PHP DateTime

时间:2016-03-13 14:28:56

标签: php laravel datetime

从客户发送:'2016年3月14日星期一15:00:00 GMT + 1100(AEDT)'

$btime = $jd["bookingtime"];

$btime = substr($btime, 0, strpos($btime, '('));

$jobdetail->bookingtime = date('Y-m-d h:i:s', strtotime($btime));

记录存储在MySQL数据库中:2016-03-14 15:00:00

1 个答案:

答案 0 :(得分:1)

当您的PHP设置为UTC默认时区时,您可以使用date_default_timezone_set()进行设置并找到您的时区。看看here for australian timezones

如果您有权访问php.ini文件,则可以在其中设置参数date.timezone到您需要的时区。如果未设置该设置,则默认为UTC。如果没有设置时区,在新版本的php中使用date函数时,AFAIK应该会有一个警告回显。

如您所述,您可以将其存储在UTC中,并根据您的需要转换为localtime。如果用户来自许多不同的时区,则UTC会更容易。

在您使用date.timezone或使用函数date_default_timezone_set()设置的时区中自动转换日期:

$d = 'Mon Mar 14 2016 15:00:00 GMT+1100';

$date = date('Y-m-d h:i:s', strtotime($d));
var_dump($date);                        // echoes '2016-03-14 04:00:00'
var_dump(date_default_timezone_get());  // echoes 'UTC'

date_default_timezone_set ('Europe/Zurich');
var_dump(date_default_timezone_get());      // echoes 'Europe/Zurich'
$date = date('Y-m-d h:i:s', strtotime($d)); // echoes '2016-03-14 05:00:00'
var_dump($date);