Какая разница между CREATED и DTSTAMP в формате iCalendar?

В спецификации iCalendar я нахожу следующее о DTSTAMP:

Это свойство отличается от "CREATED" и "LAST-MODIFIED"    свойства. Эти два свойства используются для указания, когда    определенные данные календаря в хранилище календаря были созданы и    модифицирована. Это отличается от того, когда объект iCalendar    представление информации службы календаря было создано или    последний измененный.

Что это значит? Я храню события в базе данных и хочу сгенерировать файл iCal. Я предполагаю, что CREATED должен быть установлен, когда было создано событие, но что я должен установить DTSTAMP?

Ответы

Ответ 1

DTSTAMP должен быть установлен, когда вы создаете фактический файл из информации из вашей базы данных

Ответ 2

VEVENT против события в приложении календаря

Файл A *.ical или *.ics или другой сопоставимый поток данных содержит сообщения, отправленные из одного приложения календаря в другое. Приложения календаря хранят события как объекты.

Вы можете ввести событие в свой календарь, нажав и набрав, но другой способ - импортировать файл с файлами VEVENT. Не думайте об этих сообщениях VEVENT как о дубликатах объектов событий приложения. Думайте об этом как о дубликатах нажатия и ввода текста.

С учетом этой идеи легко понять, что VEVENT не только может создать событие. Он также может изменять существующее событие и даже удалять событие из приложения.

И теперь давайте посмотрим на некоторые важные в этом контексте поля:


СОЗДАЛ

Это временная метка, когда в приложении календаря был создан объект-событие. Каждый объект события может быть идентифицирован с помощью уникального идентификатора (UID).


DTSTAMP

Это временная метка создания сообщения VEVENT в файле ical или ics. Существуют разные типы такого сообщения VEVENT, создание нового объекта события - это лишь один из них. Вы также можете изменять существующие события и даже отменять события, если вы добавляете правильный идентификатор UID в сообщение VEVENT, чтобы определить, к какому объекту события он принадлежит. Таким образом, для одного объекта события в приложении календаря (идентифицированного его UID) вы можете получать много событий VEVENT, каждый со своим DTSTAMP, но все ссылаются на событие только с одной датой CREATED.


ПОСЛЕДОВАТЕЛЬНОСТЬ

Это не метка времени, а число (целое число). Если вы опускаете порядковый номер, его обрабатывают как SEQUENCE:0. Если у вас есть несколько VEVENT (полученных в одном или нескольких файлах) для одного и того же события-объекта (тот же UID), они будут обрабатываться путем увеличения порядковых номеров. DTSTAMP просто сообщает вам, когда был создан VEVENT, но он не влияет на порядок выполнения, который определяется полем SEQUENCE. Поэтому убедитесь, что каждое изменение приложения вашего календаря устанавливает новый DTSTAMP для VEVENT вместе с приращенным номером SEQUENCE.


Last-Modified

Это также временная метка объекта в приложении календаря. Когда вы получаете ical файл с сообщением VEVENT, которым сегодня является DTSTAMP, 9:00 и вы подаете его в ваше приложение в 10:00, тогда 10 м. Является значением LAST-MODIFIED.


Как CREATED и LAST-MODIFIED имеют смысл в VEVENT?

Как показано выше, CREATED и LAST-MODIFIED являются свойствами объекта в приложении календаря, а VEVENT - это сообщение, содержащее свойства, из которых приложение календаря может создавать, изменять или удалять его объекты. Сообщение не может знать, когда вы импортируете его в свое приложение, поэтому оно не может знать, когда вы создадите или измените объект. Или он может это знать? Почему эти объекты-свойства должны быть частью сообщения?

Ответ: Чтобы иметь возможность экспортировать и импортировать объекты приложения календаря. У вас есть два устройства (скажем, мобильный телефон и настольный компьютер) и хотите сохранить синхронизацию календарей на обоих устройствах? Затем вам нужны сообщения с одного устройства, отправленного на другое, содержащее все соответствующие данные, включая отметки времени для CREATED и LAST-MODIFIED.

Так как сообщения VEVENT используются не только для имитации щелчка и ввода, как описано выше, но и для синхронизированных объектов событий в разных экземплярах календарных приложений, вам иногда также требуется CREATED и LAST-MODIFIED в сообщениях VEVENT.