我收到的字符串如 Wed Sep 28 2016 01:00:00 GMT + 0500(PKT),我需要将其转换为 2016-09-28 01:00: 00 我试过这个
$startTime = strtotime($updatedData['start']);
echo $time = date("Y-m-d H:i:s",$startTime);
但它返回 2016-09-27 20:00:00
答案 0 :(得分:2)
您可以将其更改为使用DateTime
:
$startTime = new DateTime('Wed Sep 28 2016 01:00:00 GMT+0500 (PKT)');
echo $startTime->format('Y-m-d H:i:s');
DateTime会保留您给他的时区。
答案 1 :(得分:2)
@copynpaste解决方案很好而且直截了当但我仍然会通过使用Carbon来分享我的解决方案。
Carbon是一个与laravel一起包含的库,这里是 documentation
$carbon = new Carbon('Wed Sep 28 2016 01:00:00 GMT+0500 (PKT)');
$carbon->format('Y-m-d H:i:s');
echo $carbon;
它会产生与DateTime相同的结果
2016-09-28 01:00:00
所以你可以通过一个非常小的代码添加日,分,秒等等,这就是一个例子:
$carbon->addDays(1);
echo $carbon;
//result
2016-09-29 01:00:00
答案 2 :(得分:0)
试试这个:
$startTime = strtotime($updatedData['start']);
$time = date("Y-m-d H:i:s",$startTime);
echo date( "Y-M-d H:i:s", strtotime( $time) + 5 * 3600 );
它返回UTC时间,您需要添加5个小时。也是一个快速的建议。您可以使用Carbon来处理日期时间。
答案 3 :(得分:0)
您可以在转换前设置所需的时区。请参阅以下代码作为参考。
date_default_timezone_set("Asia/Bangkok");
$str = 'Wed Sep 28 2016 01:00:00 GMT+0500 (PKT)';
$startTime = strtotime($str);
echo $time = date("Y-m-d H:i:s",$startTime);