Поля даты и времени

Поля даты и времени

Это руководство показывает, как работать с классами полей даты и времени, учитывающими календарь, в Aspose.Words FOSS для .NET — FieldDate, FieldCreateDate, FieldPrintDate, и FieldSaveDate — которые реализуют Word’s DATE, CREATEDATE, PRINTDATE, и SAVEDATE поля соответственно. Каждый класс наследуется от Field и реализует IFieldWithCalendar; для базовой Field модели объектов в целом (обновление, отсоединение, удаление и форматирование любого поля), см. the Работа с полями руководство.


Четыре класса полей даты и времени

FieldDate реализует поле DATE. FieldCreateDate реализует CREATEDATE, дату создания документа. FieldPrintDate реализует PRINTDATE, дату последней печати документа. FieldSaveDate реализует SAVEDATE, дату последнего сохранения документа. Все четыре являются подклассами Field и реализуют IFieldCodeTokenInfoProvider и IFieldWithCalendar, поэтому они наследуют от Field её GetFieldCode(), Update(), Unlink(), Remove() и члены форматирования (Format), со своими переключателями календаря, описанными ниже.


Выбор не-григорианского календаря

Каждый из четырёх классов раскрывает UseLunarCalendar (bool) для отображения результата с использованием лунного хиджра или лунного еврейского календаря, UseSakaEraCalendar (bool) для календаря эпохи Сака и UseUmAlQuraCalendar (bool) для календаря Ум-аль-Кура. Установите соответствующее свойство в значение true перед вызовом Update(), чтобы поле пересчитало свой результат, используя эту календарную систему вместо календаря по умолчанию — григорианского.


Переключатель Application-Format FieldDate

FieldDate дополнительно раскрывает UseLastFormat (bool), который контролирует, будет ли поле использовать формат, последний раз использованный хост-приложением, когда вставляется новое поле DATE. FieldCreateDate, FieldPrintDate и FieldSaveDate не раскрывают это свойство.


Советы и лучшие практики

  • Установите переключатель календаря (UseLunarCalendar, UseSakaEraCalendar или UseUmAlQuraCalendar) и затем вызовите Update() для поля — изменение только свойства не пересчитывает Result.
  • Установите только один переключатель календаря в значение true для конкретного экземпляра поля; комбинирование более одного приводит к неоднозначному результату.
  • Использовать Field.Format (a FieldFormat, описанном в Форматирование результата поля руководство) вместе с этими переключателями календаря, чтобы также управлять числовым или датой/временем форматом, применяемым к результату.
  • Выберите класс, соответствующий необходимой семантике — FieldSaveDate и FieldPrintDate читают метки времени, записанные в документе, тогда как FieldDate отражает дату, когда поле обновляется.

Распространённые проблемы

ПроблемаПричинаИсправление
Переключатель календаря не влияет на отображаемый результатПоле не было пересчитано после установки свойстваВызовите Update() у экземпляра поля после установки UseLunarCalendar, UseSakaEraCalendar или UseUmAlQuraCalendar
UseLastFormat не компилируется на FieldPrintDate или FieldSaveDateЭто свойство существует только в FieldDateИспользуйте FieldDate для поведения application-format-follows или явно задайте Format в остальных классах
Результат показывает неправильную календарную системуБолее одного переключателя календаря было установлено в true на одном и том же полеУстанавливайте только один из UseLunarCalendar, UseSakaEraCalendar, UseUmAlQuraCalendar для каждого экземпляра поля

FAQ

В чём разница между FieldDate и FieldCreateDate?

FieldDate реализует поле DATE (пересчитывается до текущей даты каждый раз при обновлении); FieldCreateDate реализует CREATEDATE (дата создания документа).

Как заставить поле даты использовать лунный хиджри-календарь?

Установите UseLunarCalendar = true в экземпляре FieldDate, FieldCreateDate, FieldPrintDate или FieldSaveDate, затем вызовите Update().

Какой из четырёх классов отслеживает время последнего сохранения документа?

FieldSaveDate, который реализует поле SAVEDATE.

Поддерживают ли эти классы пользовательское форматирование изображений, а не только переключатели календаря?

Да — каждый предоставляет a Format свойство (FieldFormat) унаследовано из базовой инфраструктуры поля; см. the Форматирование результата поля руководство по NumericFormat and DateTimeFormat.


API Reference Сводка

Класс/МетодОписание:
FieldDateРеализует поле DATE
FieldCreateDateРеализует поле CREATEDATE
FieldPrintDateРеализует поле PRINTDATE
FieldSaveDateРеализует поле SAVEDATE
UseLunarCalendarОтображает результат, используя лунный календарь Hijri Lunar или еврейский лунный календарь
UseSakaEraCalendarОтображает результат, используя календарь Saka Era
UseUmAlQuraCalendarОтображает результат, используя календарь Um-al-Qura
FieldDate.UseLastFormatИспользует формат, последний раз использованный хостинговым приложением, для нового поля DATE
IFieldWithCalendarИнтерфейс, реализуемый всеми четырьмя классами для результатов полей, учитывающих календарь

См. также:

 Русский