2016-01-07 4 views
2

Я получаю ISO DateTime, используя ниже кодизменения ISO DateTime формат в PHP

$date= date("c"); 
echo $date; 

который возвращает что-то вроде ниже

2016-01-07T20:18:46+00:00 

Но API я использую говорит, что его неправильный формат и нуждается в ниже формате:

2016-01-07T20:35:06+00Z 

Мне нужно удалить :00 в конце и добавить Z.

Я совершенно новый для регулярного выражения, может ли кто-нибудь помочь мне понять регулярное выражение и указать, какой формат требуется.

+0

Ok я понял формат, как изменить формат ISO в PHP – Vishnu

+0

@stribizhev спасибо очень полезно, я понял формат видеть мое редактировать, также теперь вы можете сказать, как изменить в этом формате в php – Vishnu

+1

[Конвертировать формат даты yyyy-mm-dd => dd-mm-yyyy] (http://stackoverflow.com/questions/2487921/convert-date-format-yyyy-mm-dd-dd-mm-yyyy) - Есть и другие, тонны таких вопросов. –

ответ

1

Вы хотите, чтобы определить формат даты.

Если микросекунд всегда будет 00

date("Y-m-d H:i:s+00\Z"); 

Else, используйте этот маленький большой из логики

date("Y-m-d H:i:s+"). substr((string)microtime(), 2, 2) . 'Z'; 

Больше информации.

http://php.net/manual/en/function.date.php

+0

Разве вы не жестко кодируете '+ 00'? –

+0

Я предположил, что значение всегда будет 00 на основе его примера, но вы можете быть правы. Я предполагаю, что это микросекунды. Я обновляю свой ответ с исправлением. – Goose

1

Вы можете найти последнее вхождение : с strrpos и получить подстроку к нему с substr, а затем добавить Z:

$date= date("c"); 
echo "Current: $date\n";  // => 2016-01-07T21:58:08+00:00 
$new_date = substr($date, 0, strrpos($date, ":")) . "Z"; 
echo "New : " . $new_date; // => 2016-01-07T22:10:54+00Z 

См demo

+0

Разве я не предлагаю рабочее решение с 'substr' раньше? Я не вижу преимущества метода, предложенного в другом ответе. –

Смежные вопросы