web-dev-qa-db-ja.com

iCalendar形式のCREATEDとDTSTAMPの違いは何ですか?

iCalendar仕様[〜#〜] dtstamp [〜#〜] について次のことがわかります。

このプロパティは、「CREATED」および「LAST-MODIFIED」プロパティとは異なります。これらの2つのプロパティは、カレンダーストア内の特定のカレンダーデータがいつ作成され、最後に変更されたかを指定するために使用されます。これは、カレンダーサービス情報のiCalendarオブジェクト表現が作成または最後に変更されたときとは異なります。

どういう意味ですか?イベントをデータベースに保存していて、iCalファイルを生成したいと思います。イベントが作成されるたびにCREATEDをに設定する必要があると思いますが、DTSTAMPを何に設定する必要がありますか?

20
Svish

データベース内の情報から実際のicalファイルを作成する場合は、DTSTAMPをに設定する必要があります。

25
Auberon Vacher

[〜#〜] vevent [〜#〜]vs。カレンダーアプリケーションのイベント

* .icalまたは* .icsファイル、または別の同等のデータストリームには、あるカレンダーアプリケーションから別のカレンダーアプリケーションに送信されるメッセージが含まれます。カレンダーアプリケーションは、イベントをobjectsとして保存します。

クリックして入力することでカレンダーにイベントを入力できますが、別の方法は、VEVENTメッセージを含むicalファイルをインポートすることです。これらのVEVENTメッセージをアプリケーションのイベントオブジェクトの複製とは考えないでください。クリックと入力の複製と考えてください。

この考えを念頭に置いて、VEVENTはイベントを作成できるだけではないことを理解するのは簡単です。また、既存のイベントを変更したり、アプリケーションからイベントを削除したりすることもできます。

それでは、このコンテキストで重要ないくつかのフィールドを見てみましょう。


作成した

これは、カレンダーアプリケーションでイベントオブジェクトが作成されたときのタイムスタンプです。各イベントオブジェクトは、一意の識別子(UID)で識別できます。


DTSTAMP

これは、icalファイルまたはicsファイルにVEVENTメッセージが作成されたときのタイムスタンプです。このようなVEVENTメッセージにはさまざまな種類があり、新しいイベントオブジェクトの作成はその1つにすぎません。また、VEVENTメッセージに正しいUIDを追加して、それが属するイベントオブジェクトを識別すると、既存のイベントを変更したり、イベントをキャンセルしたりすることもできます。したがって、カレンダーアプリケーションの1つのイベントオブジェクト(UIDで識別される)に対して、それぞれが独自のDTSTAMPを持つ多くのVEVENTイベントを受け取ることができますが、すべてが1つのCREATED日付を持つイベントを参照します。


シーケンス

これはタイムスタンプではなく、数値(整数)です。シーケンス番号を省略すると、SEQUENCE:0として扱われます。同じイベントオブジェクト(同じUID)に対して複数のVEVENT(1つ以上のファイルで受信)がある場合、それらはシーケンス番号を増やすことによって処理されます。 DTSTAMPは、VEVENTがいつ作成されたかを通知するだけですが、フィールドSEQUENCEで定義されている実行順序には影響しません。したがって、callendarアプリケーションを変更するたびに、VEVENTの新しいDTSTAMPが、増分されたSEQUENCE番号とともに設定されることを確認してください。


最終更新日

これも、カレンダーアプリケーションのオブジェクトのタイムスタンプです。 DTSTAMPが今日の午前9時であるVEVENTメッセージを含むicalファイルを受信し、それを午前10時にアプリケーションにフィードすると、午前10時がLAST-MODIFIEDの値になります。


[〜#〜]作成[〜#〜]およびLAST-MODIFIEDVEVENTで意味がありますか?

前に示したように、CREATEDとLAST-MODIFIEDはカレンダーアプリケーションのオブジェクトのプロパティですが、VEVENTはプロパティを含むメッセージであり、カレンダーアプリケーションはそこからオブジェクトを作成、変更、または削除できます。メッセージは、いつアプリケーションにインポートするかを知ることができないため、オブジェクトをいつ作成または変更するかを知ることができません。またはそれは知ることができますか?これらのオブジェクトプロパティをメッセージの一部にする必要があるのはなぜですか?

答えは次のとおりです。カレンダーアプリケーションのオブジェクトをエクスポートおよびインポートできるようにする。 2つのデバイス(たとえば、携帯電話とデスクトップコンピューター)があり、両方のデバイスのカレンダーを同期させたいですか?次に、CREATEDおよびLAST-MODIFIEDのタイムスタンプを含む、関連するすべてのデータを含む、あるデバイスから別のデバイスに送信されるメッセージが必要です。

VEVENTメッセージは、上記のようにクリックと入力を模倣するためだけでなく、カレンダーアプリケーションのさまざまなインスタンス間でイベントオブジェクトを同期するためにも使用されるため、VEVENTメッセージでCREATEDとLAST-MODIFIEDが必要になる場合もあります。

21

この質問への回答を探していました。ここでの回答は理解に役立ちましたが、 iCalendar.org サイトの情報も役に立ちました。


要するに:イベントが作成されたときに作成された状態、DTStampは「メソッド」プロパティが指定されているかどうかに関係なく、変更のタイムスタンプであり、LastModifiedはイベントの変更のタイムスタンプです。 LastModifiedはDTStampと同じであり、「メソッド」プロパティが設定されている場合はこの最後の1つも変更されます。


ここでオリジナルを共有します:

作成済み

このプロパティは、カレンダ情報がカレンダストアのカレンダユーザーエージェントによって作成された日時を指定します。

DTStamp

「METHOD」プロパティを指定するiCalendarオブジェクトの場合、このプロパティは、iCalendarオブジェクトのインスタンスが作成された日時を指定します。 「METHOD」プロパティを指定しないiCalendarオブジェクトの場合、このプロパティは、カレンダーに関連付けられた情報の日付と時刻を指定しますコンポーネントは、カレンダーストアで最後に改訂されました。

LastModified

このプロパティは、カレンダーコンポーネントに関連付けられた情報がカレンダーストアで最後に改訂された日時を指定します。

0
Deczaloth