PHP ISO 8601的格式转换问题

问题描述:

我想这个字符串 '2016年5月30日15:35:00' 转换为ISO 8601格式,它应该是这样的:PHP ISO 8601的格式转换问题

预期结果:2016 -05-30T15:35:00 + 05:30

我尝试以下,但在输出它的2小时以下,

$phpdate = strtotime('2016-05-30 15:35:00'); 

echo gmdate('Y-m-d\TH:i:s\+05:30', $phpdate); 

输出:2016-05-30T13:35:00 + 05:30

我有没有什么地方搞错了?或者是否有这种转换更简单的方法?

+0

使用日期代替gmdate – splash58

+0

'gmdate'用于UTC取而代之,你需要使用'日期',如'date('Ymd H:i:sP',$ phpdate);' –

+0

感谢您的快速回复:) –

您使用PHP的gmdate功能,转换日起UTC格式,而不是你需要使用date功能类似于

date_default_timezone_set("Asia/Kolkata");//Set your timezone to Asia/Kolkata 

$phpdate = strtotime('2016-05-30 15:35:00'); 

echo date('c', $phpdate);// 2016-05-30T13:35:00+05:30 if your timezone is of Asia/Kolkata 
+0

这似乎很明显,但它增加了+02:00到我的时区,我如何特别添加亚洲/加尔各答时区? –

+0

您需要手动将'timezone'设置为'Asia/Kolkata' –

用于处理日期我建议Carbon

您的问题更简单的方法将是:

$date = new Carbon("2016-05-30 15:35:00"); 
echo $date->toIso8601String();