Поля даты и времени
Поля даты и времени
Это руководство показывает, как работать с классами полей даты и времени, учитывающими календарь, в 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(aFieldFormat, описанном в Форматирование результата поля руководство) вместе с этими переключателями календаря, чтобы также управлять числовым или датой/временем форматом, применяемым к результату. - Выберите класс, соответствующий необходимой семантике —
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 | Интерфейс, реализуемый всеми четырьмя классами для результатов полей, учитывающих календарь |