PHP - 将字符串转换为日期

时间:2016-09-28 05:44:24

标签: php laravel datetime

我收到的字符串如 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

4 个答案:

答案 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会保留您给他的时区。

直播示例:https://3v4l.org/UTltO

答案 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);