2016-05-30 3 views
2

Я хочу, чтобы преобразовать эту строку '2016-05-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' как' date ('Ymd H: i: sP', $ phpdate); ' –

+0

спасибо за быстрые ответы :) –

ответ

1

Вы используя gmdate функцию PHP, которая преобразует дату в формате 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

Вам необходимо установить «часовой пояс» в «Азия/Калькутта» вручную –

1

более простой способ для обработки дат я рекомендую Carbon

для вашей проблемы было бы:

$date = new Carbon("2016-05-30 15:35:00"); 
echo $date->toIso8601String(); 
Смежные вопросы