Я пытаюсь получить текущее время и отформатировать его так:
"2018-09-26T21:40:29+02:00"
Но когда я пытаюсь:
$isoDate = \Carbon\Carbon::now()->format('c');
как я понял, передача c для функции форматирования будет разбирать его на iso8601, но, очевидно, это не так.
Любая помощь о том, как разобрать текущее время на ISO8601 OR 20181001T094006Z
@Devon wikipedia.org/wiki/ISO_8601
Что произойдет, если вы попробуете то, что у вас есть? c должен переводиться в ISO8601. Вот что я получаю, когда запускаю echo \Carbon\Carbon::now()->format("c");: 2018-09-26T20: 05: 30 + 00: 00
@AladinSmall, да, и разных форматов там порядка 8 ...
@Devon, я думаю, что я очень конструктивен в своем вопросе, однако из-за моей плохой репутации я хороший улов для троллинга. Поэтому, пожалуйста, прочтите вопрос еще раз, в нем указано, какой формат iso: ISO8601 ИЛИ 20181001T094006Z
Вы хотя бы пытались прочитать руководство по формату и составить его самостоятельно, используя существующие символы, такие как YmdTHisZ
@ miken32 Я пробовал, но получаю следующее: 2018-09-26T21:40:29+02:00, который неприемлем для веб-службы, которую я пытаюсь отправить, поскольку они хотят чего-то вроде: 20181001T094006Z. Я имею в виду, что я знаю уродливый способ разобрать его таким образом, извлекая год месяц .... и concat, но это должно быть что-то, чего мне не хватает.
Это именно то, что вы ищете, согласно вашему вопросу ...
@Devon, знаете ли вы, что мне нужно передать, чтобы получить правильный формат?
Какой у вас вывод делал?
@Devon, это был \Carbon\Carbon::now()->format('YmdTHisZ'). Я получаю: "20180926CEST2216517200", вот что мне нужно знать, поэтому добавьте ответ, чтобы пометить вопрос как решенный. Благодарю.
Итак, T и Z - это символы формата, поэтому их экранирование с помощью обратной косой черты должно работать.
@Devon работает. наконец спасибо на той же частоте.
Рассмотрите возможность изменения принятого ответа. Ответ Нурдина работает.






Единого формата 8601 нет. 8601 определяет различные допустимые форматы, из которых c PHP представляет собой одну из наиболее распространенных форм.
Для конкретного формата 8601, который вы хотите, нет единого символа, но формат Ymd\THis\Z должен работать. T и Z являются буквальными, поэтому используйте обратную косую черту, чтобы избежать их интерпретации в строке формата. Убедитесь, что в этом конкретном формате используются только временные метки UTC.
http://php.net/manual/en/function.date.php перечисляет все допустимые символы формата.
Вы уверены, что это действующий формат ISO 8601? Я не думаю, что дефисы между годом, месяцем и датой необязательны, как и двоеточия между часами, минутами и секундами.
да. Как я уже сказал в ответе и комментариях, 8601 имеет несколько форматов.
echo Carbon::now()->toIso8601String();
Carbon::now()->toISOString()
это вернется "2020-05-12T13: 13: 42.817684Z"
Carbon::now()->toIso8601String()
это вернется «2020-05-12T13: 15: 32 + 00: 00»
используя corePHP
date(DateTime::ATOM, time())
это вернется «2021-08-22T15: 26: 48 + 10: 00»
Единого формата 8601 нет. Создайте его самостоятельно с помощью форматов даты.