Редактировать: На сегодняшний день самый простой способ - просто попытаться создать объект DateTime
с использованием строки, например
$dt = new DateTime($dateTimeString);
Если конструктор DateTime
не может проанализировать строку, он выдаст исключение, например,
DateTime :: __ construct (): Не удалось проанализировать строку времени (2011-10-02T23: 25: 72Z) в позиции 18 (2): неожиданный символ
Обратите внимание, что если вы не укажете указатель часового пояса, он будет использовать настроенный часовой пояс по умолчанию.
Второй самый простой способ - использовать регулярное выражение. Нечто подобное должно покрыть это
if (preg_match('/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(Z|(\+|-)\d{2}(:?\d{2})?)$/', $dateString, $parts)) {
// valid string format, can now check parts
$year = $parts[1];
$month = $parts[2];
$day = $parts[3];
// etc
}