Вы можете сделать что-то подобное:
$dateTime = new DateTime($myDate);
$formatted = $dateTime->format("Y-m-d\TH:i:s.z\Z");
Упомянутое решение с:
$dateTime->format(DateTime::W3C);
$dateTime->format(DateTime::ISO8601);
возвращает строки вроде:
2012-11-28T17:21:11+0100
, который не может быть проанализирован, по крайней мере, в более новых версиях Solr.
Я бы не использовал gmdate, если вам нужна поддержка часовых поясов. Реализация DateTime хорошо сделана, а также доступна для функционального программирования.