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

标签 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 的内容。

非常感谢!

最佳答案

我假设“tag”指的是 getlastmodified 属性,它返回这个 日期:

Mon, 22 Jan 2018 20:03:49 GMT

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

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

您可以做的是在 shell 中解析并重新格式化您的 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}"

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

关于xml - CalDav Propfind 响应中的日期格式 - 如何更改它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48390007/

相关文章:

php - .xlsx 文件可以简化到什么程度

java - 如何在 Activity 中膨胀菜单

正则表达式/bash 查找具有最新日期的字符串?

javascript - 在 JQuery 中查找本月的第三个星期日

java - 如何以毫秒为单位设置计时器 (MM :SS:mm)

objective-c - iOS 是否有任何支持格式化数字的库,例如 Mac OSX 的 NSNumberFormatter?

c# - 使用命名空间解析 XML 文件

xml - 尝试从 Node.js 获取信息 SOAP 时出错

java - 将逗号分隔的 xml 值转换为 xml 元素并最后截断不需要的数据

arrays - 使用月份过滤数组(具有 "Date"成员)