Формат даты в ответе CalDav Propfind — как его изменить?

Я пытаюсь настроить клиент CalDav для iCloud. Я использую следующий HTTP-завиток PROPFIND:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<d:propfind xmlns:d="DAV:" xmlns:cs="http://calendarserver.org/ns/">

  <d:prop>
    <d:displayname/>
    <cs:getctag/>
    <d:resource-class/>
    <d:getlastmodified/>
  </d:prop>

</d:propfind>

Ответ примерно такой:

    <getlastmodified>Mon, 22 Jan 2018 20:03:49 GMT</getlastmodified>
    <creationdate>2013-04-02T20:12:23Z</creationdate>
    <auto-provisioned xmlns="urn:mobileme:server-to-server"/>

Я знаю, хочу знать, могу ли я получить формат тега в другом формате? Лучше всего что-то вроде 2013-04-02T20:12:23Z.

Большое спасибо!


person Klerafukan    schedule 22.01.2018    source источник
comment
Если ваша оболочка bash, вы можете получить ее следующим образом: date -d 'Mon, 22 Jan 2018 20:03:49 GMT' --iso-8601=seconds   -  person LMC    schedule 23.01.2018
comment
Спасибо! Но я должен использовать завиток. Вы знаете, есть ли для этого опция xml?   -  person Klerafukan    schedule 24.01.2018
comment
Не то чтобы я в курсе.   -  person LMC    schedule 24.01.2018


Ответы (1)


Я предполагаю, что под «тегом» вы подразумеваете свойство getlastmodified, которое возвращает эту дату:

Mon, 22 Jan 2018 20:03:49 GMT

и вы спрашиваете, можете ли вы заставить сервер вернуть эту дату в другом формате. Нет, нельзя, формат свойства getlastmodified WebDAV стандартизирован и представляет собой rfc1123-date в WebDAV RFC (4918).

ВАЖНО: getlastmodified это не тег! Если вам нужен тег для синхронизации, используйте ETag. Это хорошо объясняется в документе Создание клиента CalDAV.

Что вы можете сделать, так это проанализировать и переформатировать вывод curl в оболочке. Для этого можно использовать xmlstarlet или другой инструмент:

lastmod=$(curl ... | xmlstarlet sel -N x="DAV:" -t -v "//x:getlastmodified")
date -jf \
  "%a, %d %b %Y %H:%M:%S GMT" \
  +"%Y-%M-%dT%H:%M:%SZ" \
  "${lastmod}"

... приспосабливаться к вашим потребностям.

person hnh    schedule 24.01.2018
comment
Большое спасибо! Это была та информация, которая мне была нужна. - person Klerafukan; 24.01.2018