Преобразование даты в PHP в формат XMLGregorianCalendar и обратно

#php #datetime #gregorian-calendar

#php #datetime #григорианский календарь

Вопрос:

Я вызываю веб-службу SOAP, которая ожидает получения даты / времени в формате XMLGregorianCalendar. Так, например, мне нужно было бы преобразовать ГГГГ-ММ-ДД ЧЧ: ММ: СС в этот формат.

Когда я извлекаю данные из веб-службы, мне нужно будет преобразовать дату / время из формата XMLGregorianCalendar в ГГГГ-ММ-ДД ЧЧ: ММ: СС.

Обычно я бы опубликовал некоторый код, который я пробовал, но, честно говоря, у меня возникли проблемы с поиском чего-либо, что помогло бы мне начать работу с PHP. Итак, мои извинения за отсутствие примера кода. Был бы ОЧЕНЬ признателен за любые рекомендации.

Ответ №1:

Формат даты, используемый в XML, — ISO-8601. Вы можете использовать strftime для преобразования его в временную метку Unix и дату, чтобы преобразовать его обратно в приятный для чтения формат.

Эти строки формата могут пригодиться:

  • «Y-m-d H: i: s» пример: «2014-06-27 20:14:49»
  • пример «c»: «2014-06-27T20:14:49 00:00»

Вы можете проверить поддерживаемые форматы времени strtotime здесь: http://de3.php.net/manual/en/function.strtotime.php

И синтаксис для даты здесь: http://www.php.net/manual/en/function.date.php

 $date = date("Y-m-d H:i:s", strtotime($date)); // Output as datetime used in SQL 
$date = date("c", strtotime($date)); // Output as datetime used in XML 
  

Комментарии:

1. Спасибо. Это формат даты / времени, который они ожидают: 2014-07-26T10:29:26.163-06:00 я понимаю, что такое все, кроме T и .163. Предполагая, что T просто обозначает начало времени. Не уверен, что такое .163?

2. Это обычный формат времени iso-8601. St r в time может отлично проанализировать это, и date («c») снова выведет его. Проверьте документ на дату.

3. Ах имеет смысл — действительно ценю это.