iCalendar格式的CREATED和DTSTAMP有什么区别?

时间:2012-07-21 18:41:12

标签: icalendar

iCalendar spec中,我发现以下关于DTSTAMP

的内容
  

此属性与“CREATED”和“LAST-MODIFIED”不同      属性。这两个属性用于指定何时      日历存储中的特定日历数据已创建并且最后      改性。这与iCalendar对象不同      已创建日历服务信息的表示或      最后修改。

这是什么意思?我将事件存储在数据库中,并希望生成iCal文件。我假设CREATED应该设置为每当创建事件时,但我应该将DTSTAMP设置为什么?

3 个答案:

答案 0 :(得分:24)

当您从数据库中的信息创建实际的ical文件时,应将DTSTAMP设置为

答案 1 :(得分:19)

VEVENT 与日历应用程序中的事件

A * .ical或* .ics文件或其他类似数据流包含从一个日历应用程序发送到另一个日历应用程序的消息。日历应用程序将事件存储为对象

您可以通过单击并键入在日历中输入事件,但另一种方法是使用VEVENT消息导入文件。不要将那些VEVENT消息视为应用程序的事件对象的副本。将其视为点击和输入的重复项。

考虑到这个想法,很容易理解,VEVENT不仅可以创建一个事件。它还可以更改现有事件,甚至可以从应用程序中删除事件。

现在让我们来看看在这种情况下重要的一些领域:

CREATED

这是在日历应用程序中创建事件对象的时间戳。每个事件对象都可以通过唯一标识符(UID)进行标识。

DTSTAMP

这是在ics或ics文件中创建VEVENT消息的时间戳。存在不同类型的此类VEVENT消息,创建新的事件对象只是其中之一。如果向VEVENT消息添加正确的UID以识别它所属的事件对象,您还可以更改现有事件甚至取消事件。因此,对于日历应用程序中的一个事件对象(由其UID标识),您可以接收许多VEVENT事件,每个事件都有自己的DTSTAMP,但都指的是只有一个创建日期的事件。

SEQUENCE

这不是时间戳,而是数字(整数)。如果省略序列号,则将其视为SEQUENCE:0。如果对于同一事件对象(相同的UID)有多个VEVENT(在一个或多个文件中接收),则将通过增加序列号来处理它们。 DTSTAMP只会告诉您何时创建VEVENT,但它不会影响执行顺序,执行顺序由字段SEQUENCE定义。因此,请确保您的callendar应用程序中的每个更改都为VEVENT设置了新的DTSTAMP以及增加的SEQUENCE编号。

上次修改

这又是日历应用程序中对象的时间戳。当您收到带有VSTVENT消息的ical-file时,其今天上午9点是DTSTAMP,并且您在上午10点将其提供给您的应用程序,然后上午10点是LAST-MODIFIED的值。

CREATED LAST-MODIFIED 如何在VEVENT中有意义?

如前所示,CREATED和LAST-MODIFIED是日历应用程序中对象的属性,而VEVENT是包含属性的消息,日历应用程序可以从中创建,修改或删除其对象。消息无法知道何时将其导入应用程序,因此无法知道何时创建或修改对象。或者它可以知道吗?为什么这些对象属性应该成为消息的一部分?

答案是:能够导出和导入日历应用程序的对象。你有两个设备(比如手机和台式电脑),并希望两个设备上的日历保持同步?然后,您需要从一个设备发送的消息包含所有相关数据,包括CREATED和LAST-MODIFIED的时间戳。

由于VEVENT消息不仅用于模仿上述的点击和键入,而且还用于跨日历应用程序的不同实例同步事件对象,因此有时在VEVENT消息中也需要CREATED和LAST-MODIFIED。 / p>

答案 2 :(得分:0)

我一直在寻找这个问题的答案,尽管这里的答案可以帮助我理解,但我也发现iCalendar.org网站上的信息很有帮助。


简而言之 :创建事件时的创建状态,DTStamp是修改的时间戳,无论是否指定“ Method”属性,以及LastModified是事件修改的时间戳。看到LastModified与DTStamp相同,并且在设置了“ Method”属性的情况下,最后一个也有所更改。


我只在这里分享原始照片:

Created

  

此属性指定日历用户代理在日历存储中创建日历信息的日期和时间。

DTStamp

  

对于指定了“ METHOD”属性的iCalendar对象,该属性指定创建iCalendar对象的实例的日期和时间。 对于未指定“ METHOD”属性的iCalendar对象,该属性指定与日历组件相关联的信息在日历存储区中的最新修订日期和时间。 >

LastModified

  

此属性指定与日历组件相关的信息在日历存储区中的最新修订日期和时间。