Вижу в АПИ которое я использую, принимает дату такого вида:
2017-12-17T19:44:46+03:00
А что это за формат такой? +03:00, T - это что?
Если мне на php вывести нужно текущую дату минус 1 час, как правильно выводить?
$startDate = date('Y-m-d', time()-3600) . 'T' . date('H:i:s', time()-3600) . '+03:00';
Вот так выводить приходится, может есть какой-то более "красивый" способ? Может встроенная функция есть какая-то?
Это ISO 8601. +03:00 — смещение зоны, которое зависит от часового пояса, на который настроен сервер, и текущей даты; +03:00 это смещение для Europe/Moscow с 2014 года.
Вывести текущую дату минус один час:
echo date('c', time()-3600);
Результат:
2017-12-17T20:07:00+03:00
А что это за формат такой?
Как уже правильно сказали это стандарт ISO 8601, но имейте в виду, что в PHP DateTime::ISO8601 вводит в заблуждение, если вас интересует этот стандарт следует использовать DateTime::ATOM. Подробнее вы можете прочитать здесь.
Вот так выводить приходится, может есть какой-то более "красивый" способ? Может встроенная функция есть какая-то?
Есть более красивый объектный поход:
$date = new DateTime('now', new DateTimeZone('utc')); //получение текущего времени по utc
$date->sub(new DateInterval('1H'); //Вычитаем один час
$startDate = $date->format(DateTime::ATOM); //Форматируем по ISO 8601
Если вам нужно время по москве, то замените utc на Europe/Moscow. Со списком всех временных зон вы можете ознакомиться здесь, но не используйте те константы что определены в классе DateTimeZone, это не сработает.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей