Datum- und Zeitfelder
Datums- und Zeitfelder
Dieser Leitfaden zeigt, wie man mit den kalenderbewussten Datums- und Zeitfeldklassen in Aspose.Words FOSS für .NET arbeitet — FieldDate, FieldCreateDate, FieldPrintDate, und FieldSaveDate — die Word’s DATE, CREATEDATE, PRINTDATE, und SAVEDATE Felder jeweils. Jede Klasse erbt von Field und implementiert IFieldWithCalendar; für das Basis Field Objektmodell selbst (aktualisieren, entlinken, entfernen und formatieren jedes Feldes), siehe das Arbeiten mit Feldern Leitfaden.
Die vier Datums- und Zeitfeldklassen
FieldDate implementiert das Feld DATE. FieldCreateDate implementiert CREATEDATE, das Erstellungsdatum des Dokuments. FieldPrintDate implementiert PRINTDATE, das Datum, an dem das Dokument zuletzt gedruckt wurde. FieldSaveDate implementiert SAVEDATE, das Datum, an dem das Dokument zuletzt gespeichert wurde. Alle vier sind Unterklassen von Field und implementieren IFieldCodeTokenInfoProvider und IFieldWithCalendar, sodass sie Fields GetFieldCode(), Update(), Unlink(), Remove() und die Formatierungs-(Format)-Member gemeinsam nutzen, neben ihren unten beschriebenen Kalenderschaltern.
Auswahl eines nicht-gregorianischen Kalenders
Jede der vier Klassen stellt UseLunarCalendar (bool) bereit, um das Ergebnis mit dem Hijri-Lunar- oder Hebräisch-Lunar-Kalender darzustellen, UseSakaEraCalendar (bool) für den Saka-Era-Kalender und UseUmAlQuraCalendar (bool) für den Um-al-Qura-Kalender. Setzen Sie die entsprechende Eigenschaft auf true, bevor Sie Update() aufrufen, damit das Feld sein Ergebnis mit diesem Kalendersystem anstatt des standardmäßigen gregorianischen Kalenders neu berechnet.
FieldDate’s Anwendungs-Format-Schalter
FieldDate stellt zusätzlich UseLastFormat (bool) bereit, das steuert, ob das Feld ein Format verwendet, das zuletzt von der Host-Anwendung verwendet wurde, wenn ein neues DATE-Feld eingefügt wird. FieldCreateDate, FieldPrintDate und FieldSaveDate stellen diese Eigenschaft nicht bereit.
Tipps und bewährte Verfahren
- Setzen Sie einen Kalender-Schalter (
UseLunarCalendar,UseSakaEraCalendaroderUseUmAlQuraCalendar) und rufen Sie anschließendUpdate()für das Feld auf — das alleinige Ändern der Eigenschaft berechnetResultnicht neu. - Setzen Sie für eine gegebene Feldinstanz nur einen Kalender-Schalter auf
true; die Kombination von mehr als einem führt zu einem mehrdeutigen Ergebnis. - Verwenden
Field.Format(einFieldFormat, behandelt im Feld-Ergebnisformatierung Leitfaden) zusammen mit diesen Kalenderschaltern, um ebenfalls die numerische oder Datums-/Uhrzeitformatierung, die auf das Ergebnis angewendet wird, zu steuern. - Wählen Sie die Klasse, die der von Ihnen benötigten Semantik entspricht —
FieldSaveDateundFieldPrintDatelesen Zeitstempel, die im Dokument gespeichert sind, währendFieldDatedas Datum widerspiegelt, an dem das Feld aktualisiert wird.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| Kalenderumschaltung hat keinen Einfluss auf das angezeigte Ergebnis | Das Feld wurde nach dem Setzen der Eigenschaft nicht neu berechnet | Rufen Sie Update() auf der Feldinstanz auf, nachdem Sie UseLunarCalendar, UseSakaEraCalendar oder UseUmAlQuraCalendar gesetzt haben |
UseLastFormat lässt sich nicht auf FieldPrintDate oder FieldSaveDate kompilieren | Diese Eigenschaft existiert nur auf FieldDate | Verwenden Sie FieldDate für das Verhalten application-format-follows oder setzen Sie Format explizit in den anderen Klassen |
| Ergebnis zeigt das falsche Kalendersystem | Mehr als ein Kalenderwechsel war auf dem gleichen Feld auf true gesetzt | Setze pro Feldinstanz nur eines von UseLunarCalendar, UseSakaEraCalendar, UseUmAlQuraCalendar |
FAQ
Was ist der Unterschied zwischen FieldDate und FieldCreateDate?
FieldDate implementiert das DATE-Feld (berechnet das aktuelle Datum jedes Mal neu, wenn es aktualisiert wird); FieldCreateDate implementiert CREATEDATE (das Datum, an dem das Dokument erstellt wurde).
Wie stelle ich ein Datumsfeld so ein, dass es den Hijri-Lunar-Kalender verwendet?
Setze UseLunarCalendar = true auf der FieldDate, FieldCreateDate, FieldPrintDate oder FieldSaveDate Instanz, dann rufe Update() auf.
Welche der vier Klassen verfolgt, wann ein Dokument zuletzt gespeichert wurde?
FieldSaveDate, das das SAVEDATE-Feld implementiert.
Unterstützen diese Klassen benutzerdefinierte Formatierungsbilder und nicht nur Kalenderumschalter?
Ja — jede gibt ein Format Eigenschaft (FieldFormat) geerbt von der Basis-Feld-Infrastruktur; siehe die Feld-Ergebnisformatierung Leitfaden für NumericFormat and DateTimeFormat.
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
FieldDate | Implementiert das DATE-Feld |
FieldCreateDate | Implementiert das CREATEDATE-Feld |
FieldPrintDate | Implementiert das PRINTDATE-Feld |
FieldSaveDate | Implementiert das Feld SAVEDATE |
UseLunarCalendar | Rendert das Ergebnis mit dem Hijri-Mondkalender oder dem Hebräischen Mondkalender |
UseSakaEraCalendar | Rendert das Ergebnis mit dem Saka-Ära-Kalender |
UseUmAlQuraCalendar | Rendert das Ergebnis mit dem Um-al-Qura-Kalender |
FieldDate.UseLastFormat | Verwendet ein Format, das zuletzt von der Hosting-Anwendung für ein neues DATE-Feld verwendet wurde |
IFieldWithCalendar | Schnittstelle, die von allen vier Klassen für kalenderbewusste Feldresultate implementiert wird |