Углеродный анализ согласно ISO8601

Я пытаюсь получить текущее время и отформатировать его так:

"2018-09-26T21:40:29+02:00"

Но когда я пытаюсь:

$isoDate = \Carbon\Carbon::now()->format('c');

как я понял, передача c для функции форматирования будет разбирать его на iso8601, но, очевидно, это не так.

Любая помощь о том, как разобрать текущее время на ISO8601 OR 20181001T094006Z

Единого формата 8601 нет. Создайте его самостоятельно с помощью форматов даты.

Devon 26.09.2018 21:48

@Devon wikipedia.org/wiki/ISO_8601

Aladin Small 26.09.2018 22:00

Что произойдет, если вы попробуете то, что у вас есть? c должен переводиться в ISO8601. Вот что я получаю, когда запускаю echo \Carbon\Carbon::now()->format("c");: 2018-09-26T20: 05: 30 + 00: 00

miken32 26.09.2018 22:04

@AladinSmall, да, и разных форматов там порядка 8 ...

Devon 26.09.2018 22:06

@Devon, я думаю, что я очень конструктивен в своем вопросе, однако из-за моей плохой репутации я хороший улов для троллинга. Поэтому, пожалуйста, прочтите вопрос еще раз, в нем указано, какой формат iso: ISO8601 ИЛИ 20181001T094006Z

Aladin Small 26.09.2018 22:11

Вы хотя бы пытались прочитать руководство по формату и составить его самостоятельно, используя существующие символы, такие как YmdTHisZ

Devon 26.09.2018 22:12

@ miken32 Я пробовал, но получаю следующее: 2018-09-26T21:40:29+02:00, который неприемлем для веб-службы, которую я пытаюсь отправить, поскольку они хотят чего-то вроде: 20181001T094006Z. Я имею в виду, что я знаю уродливый способ разобрать его таким образом, извлекая год месяц .... и concat, но это должно быть что-то, чего мне не хватает.

Aladin Small 26.09.2018 22:12

Это именно то, что вы ищете, согласно вашему вопросу ...

miken32 26.09.2018 22:13

@Devon, знаете ли вы, что мне нужно передать, чтобы получить правильный формат?

Aladin Small 26.09.2018 22:16

Какой у вас вывод делал?

Evert 26.09.2018 22:16

@Devon, это был \Carbon\Carbon::now()->format('YmdTHisZ'). Я получаю: "20180926CEST2216517200", вот что мне нужно знать, поэтому добавьте ответ, чтобы пометить вопрос как решенный. Благодарю.

Aladin Small 26.09.2018 22:18

Итак, T и Z - это символы формата, поэтому их экранирование с помощью обратной косой черты должно работать.

Devon 26.09.2018 22:19

@Devon работает. наконец спасибо на той же частоте.

Aladin Small 26.09.2018 22:20

Рассмотрите возможность изменения принятого ответа. Ответ Нурдина работает.

FabricioG 24.06.2020 21:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
15
14
25 164
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Единого формата 8601 нет. 8601 определяет различные допустимые форматы, из которых c PHP представляет собой одну из наиболее распространенных форм.

Для конкретного формата 8601, который вы хотите, нет единого символа, но формат Ymd\THis\Z должен работать. T и Z являются буквальными, поэтому используйте обратную косую черту, чтобы избежать их интерпретации в строке формата. Убедитесь, что в этом конкретном формате используются только временные метки UTC.

http://php.net/manual/en/function.date.php перечисляет все допустимые символы формата.

Вы уверены, что это действующий формат ISO 8601? Я не думаю, что дефисы между годом, месяцем и датой необязательны, как и двоеточия между часами, минутами и секундами.

jelhan 27.09.2018 00:07

да. Как я уже сказал в ответе и комментариях, 8601 имеет несколько форматов.

Devon 27.09.2018 00:18
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»

Другие вопросы по теме