Champs de date et d'heure
Champs de date et d’heure
Ce guide montre comment travailler avec les classes de champs de date et d’heure sensibles au calendrier dans Aspose.Words FOSS pour .NET — FieldDate, FieldCreateDate, FieldPrintDate, et FieldSaveDate — qui implémentent les champs Word’s DATE, CREATEDATE, PRINTDATE, et SAVEDATE champs respectivement. Chaque classe dérive de Field et implémente IFieldWithCalendar; pour le modèle de base Field du modèle d’objet lui-même (mise à jour, détachement, suppression et formatage de tout champ), voir le Travailler avec les champs guide.
Les quatre classes de champs de date et d’heure
FieldDate implémente le champ DATE. FieldCreateDate implémente CREATEDATE, la date de création du document. FieldPrintDate implémente PRINTDATE, la date à laquelle le document a été imprimé pour la dernière fois. FieldSaveDate implémente SAVEDATE, la date à laquelle le document a été enregistré pour la dernière fois. Les quatre sont des sous-classes de Field et implémentent IFieldCodeTokenInfoProvider et IFieldWithCalendar, de sorte qu’ils partagent les membres GetFieldCode(), Update(), Unlink(), Remove() et de formatage (Format) de Field, ainsi que leurs propres commutateurs de calendrier décrits ci-dessous.
Sélection d’un calendrier non grégorien
Chacune des quatre classes expose UseLunarCalendar (bool) pour rendre le résultat en utilisant le calendrier lunaire Hijri ou le calendrier lunaire hébreu, UseSakaEraCalendar (bool) pour le calendrier de l’ère Saka, et UseUmAlQuraCalendar (bool) pour le calendrier Um-al-Qura. Définissez la propriété correspondante sur true avant d’appeler Update() afin que le champ recalculte son résultat en utilisant ce système de calendrier au lieu du calendrier grégorien par défaut.
Commutateur Application-Format de FieldDate
FieldDate expose également UseLastFormat (bool), qui contrôle si le champ utilise le format dernièrement utilisé par l’application hôte lorsqu’un nouveau champ DATE est inséré. FieldCreateDate, FieldPrintDate et FieldSaveDate n’exposent pas cette propriété.
Conseils et bonnes pratiques
- Définissez un commutateur de calendrier (
UseLunarCalendar,UseSakaEraCalendarouUseUmAlQuraCalendar) puis appelezUpdate()sur le champ — modifier uniquement la propriété ne recalcule pasResult. - Définissez un seul commutateur de calendrier sur
truepour une instance de champ donnée; combiner plus d’un produit un résultat ambigu. - Utiliser
Field.Format(unFieldFormat, couvert dans le Mise en forme du résultat du champ guide) ainsi qu’avec ces commutateurs de calendrier pour également contrôler le format numérique ou date/heure appliqué au résultat. - Choisissez la classe qui correspond à la sémantique dont vous avez besoin —
FieldSaveDateetFieldPrintDatelisent les horodatages enregistrés dans le document, tandis queFieldDatereflète la date à laquelle le champ est mis à jour.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
| Le commutateur de calendrier n’a aucun effet sur le résultat affiché | Le champ n’a pas été recalculé après que la propriété a été définie | Appelez Update() sur l’instance du champ après avoir défini UseLunarCalendar, UseSakaEraCalendar ou UseUmAlQuraCalendar |
UseLastFormat ne compile pas sur FieldPrintDate ou FieldSaveDate | Cette propriété n’existe que sur FieldDate | Utilisez FieldDate pour le comportement application-format-follows, ou définissez Format explicitement sur les autres classes |
| Le résultat indique le mauvais système de calendrier | Plus d’un commutateur de calendrier a été défini sur true dans le même champ | Définissez uniquement l’un de UseLunarCalendar, UseSakaEraCalendar, UseUmAlQuraCalendar par instance de champ |
FAQ
Quelle est la différence entre FieldDate et FieldCreateDate ?
FieldDate implémente le champ DATE (recalcule à la date actuelle à chaque mise à jour); FieldCreateDate implémente CREATEDATE (la date de création du document).
Comment faire en sorte qu’un champ date utilise le calendrier lunaire hijri?
Définissez UseLunarCalendar = true sur l’instance FieldDate, FieldCreateDate, FieldPrintDate ou FieldSaveDate, puis appelez Update().
Laquelle des quatre classes suit la date de la dernière sauvegarde d’un document?
FieldSaveDate, qui implémente le champ SAVEDATE.
Ces classes prennent-elles en charge la mise en forme personnalisée d’images, et pas seulement les commutateurs de calendrier?
Oui — chacun expose un Format propriété (FieldFormat) Mise en forme du résultat du champ guide pour NumericFormat and DateTimeFormat.
API Reference Résumé
| Classe/Méthode | Description |
|---|---|
FieldDate | Implémente le champ DATE |
FieldCreateDate | Implémente le champ CREATEDATE |
FieldPrintDate | Implémente le champ PRINTDATE |
FieldSaveDate | Implémente le champ SAVEDATE |
UseLunarCalendar | Rend le résultat en utilisant le calendrier Hijri Lunar ou le calendrier Hebrew Lunar |
UseSakaEraCalendar | Rend le résultat en utilisant le calendrier Saka Era |
UseUmAlQuraCalendar | Rend le résultat en utilisant le calendrier Um-al-Qura |
FieldDate.UseLastFormat | Utilise le format utilisé en dernier par l’application d’hébergement pour un nouveau champ DATE |
IFieldWithCalendar | Interface implémentée par les quatre classes pour les résultats de champ sensibles au calendrier |