CalDav中的日期格式Propfind响应 - 如何更改?

时间:2018-01-22 20:48:53

标签: xml date format icloud caldav

我正在尝试使用iCloud设置CalDav客户端。我正在使用以下PROPFIND http curl:

<?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。

非常感谢!

1 个答案:

答案 0 :(得分:1)

我假设“tag”表示getlastmodified属性,它返回此属性 日期:

Mon, 22 Jan 2018 20:03:49 GMT

你问是否可以让服务器返回该日期 格式不同。 不,你不能,getlastmodified的格式 WebDAV属性标准化为 rfc1123-date 在里面 WebDAV RFC(4918)。

重要提示:getlastmodified不是标签!如果你需要一个标签 同步,使用 ETagBuilding a CalDAV client xmlstarlet 文件很好地解释了这一点。

您可以做的是解析并重新格式化shell中的curl输出。 你可以使用{{3}} 或其他工具:

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}"

......根据您的需求进行调整。