2016-09-28 176 views
0

我收到一个字符串,如Wed Sep 28 2016 01:00:00 GMT + 0500(PKT)我需要将其转换为2016-09-28 01:00: 00 我已经试过这PHP - 将字符串转换为日期

$startTime = strtotime($updatedData['start']); 
echo $time = date("Y-m-d H:i:s",$startTime); 

但它返回我2016年9月27日20:00:00

+0

这是因为时区,时间是+5,但结果是+0。 – danopz

+0

检查您的时区 – follio

+0

您的出门日期是格林尼治标准时间。所以请设置time_zone并运行脚本 –

回答

2

你可以改变它使用DateTime

$startTime = new DateTime('Wed Sep 28 2016 01:00:00 GMT+0500 (PKT)'); 
echo $startTime->format('Y-m-d H:i:s'); 

日期时间让你给他的时区。

活生生的例子:https://3v4l.org/UTltO

+0

正是我需要 – baig772

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来处理日期时间。

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); 
2

@copynpaste的解决方案是好的,直线前进,但我仍然会用炭分享我的解决方案。

碳是与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 
+0

'$ dateTime->修改( '+1天')'https://3v4l.org/PFuig – danopz

+1

+1我喜欢这个答案因为这个问题被标记为laravel,并且这个答案提供了一种使用碳的方法。 – ubuntugod