Datum- en tijdvelden
Datum- en tijdvelden
Deze gids toont hoe je kunt werken met de kalenderbewuste datum- en tijdveldklassen in Aspose.Words FOSS voor .NET — FieldDate, FieldCreateDate, FieldPrintDate, en FieldSaveDate — die Word’s DATE, CREATEDATE, PRINTDATE, en SAVEDATE velden respectievelijk. Elke klasse erft van Field en implementeert IFieldWithCalendar; voor het basis Field objectmodel zelf (bijwerken, ontkoppelen, verwijderen en opmaken van elk veld), zie de Werken met velden gids.
De vier datum- en tijdveldklassen
FieldDate implementeert het DATE veld. FieldCreateDate implementeert CREATEDATE, de datum waarop het document is aangemaakt. FieldPrintDate implementeert PRINTDATE, de datum waarop het document voor het laatst is afgedrukt. FieldSaveDate implementeert SAVEDATE, de datum waarop het document voor het laatst is opgeslagen. Alle vier zijn subklassen van Field en implementeren IFieldCodeTokenInfoProvider en IFieldWithCalendar, zodat ze de GetFieldCode(), Update(), Unlink(), Remove() en opmaak (Format) leden van Field delen, naast hun eigen kalenderschakelaars die hieronder worden beschreven.
Selecteren van een niet-Gregoriaanse kalender
Elke van de vier klassen stelt UseLunarCalendar (bool) bloot om het resultaat te renderen met de Hijri-Maan- of Hebreeuwse Maan-kalender, UseSakaEraCalendar (bool) voor de Saka Era-kalender, en UseUmAlQuraCalendar (bool) voor de Um-al-Qura-kalender. Stel de overeenkomstige eigenschap in op true voordat u Update() aanroept, zodat het veld zijn resultaat opnieuw berekent met dat kalendersysteem in plaats van de standaard Gregoriaanse kalender.
FieldDate’s Applicatie-Formaatschakelaar
FieldDate exposeert bovendien UseLastFormat (bool), waarmee wordt bepaald of het veld een formaat gebruikt dat het host-toepassing laatst heeft gebruikt wanneer een nieuw DATE veld wordt ingevoegd. FieldCreateDate, FieldPrintDate en FieldSaveDate bieden deze eigenschap niet aan.
Tips en best practices
- Stel een kalenderschakelaar in (
UseLunarCalendar,UseSakaEraCalendarofUseUmAlQuraCalendar) en roep vervolgensUpdate()aan op het veld — het alleen wijzigen van de eigenschap berekentResultniet opnieuw. - Stel op een gegeven veldinstantie slechts één kalenderschakelaar in op
true; het combineren van meer dan één leidt tot een onduidelijk resultaat. - Gebruik
Field.Format(eenFieldFormat, behandeld in de Veldresultaatopmaak gids) naast deze kalenderschakelaars om ook de numerieke of datum/tijd-opmaakweergave die op het resultaat wordt toegepast te regelen. - Kies de klasse die past bij de semantiek die u nodig heeft —
FieldSaveDateenFieldPrintDatelezen tijdstempels die in het document zijn vastgelegd, terwijlFieldDatede datum weergeeft waarop het veld wordt bijgewerkt.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Kalenderwissel heeft geen effect op het weergegeven resultaat | Het veld werd niet opnieuw berekend nadat de eigenschap was ingesteld | Roep Update() aan op de veldinstantie na het instellen van UseLunarCalendar, UseSakaEraCalendar of UseUmAlQuraCalendar |
UseLastFormat compileert niet op FieldPrintDate of FieldSaveDate | Die eigenschap bestaat alleen op FieldDate | Gebruik FieldDate voor application-format-follows gedrag, of stel Format expliciet in op de andere klassen |
| Resultaat toont het verkeerde kalendersysteem | Er is meer dan één kalenderwisselaar ingesteld op true op hetzelfde veld | Stel slechts één van UseLunarCalendar, UseSakaEraCalendar, UseUmAlQuraCalendar in per veldinstantie |
FAQ
Wat is het verschil tussen FieldDate en FieldCreateDate?
FieldDate implementeert het DATE veld (recalculeert naar de huidige datum elke keer dat het wordt bijgewerkt); FieldCreateDate implementeert CREATEDATE (de datum waarop het document is gemaakt).
Hoe kan ik een datumveld de Hijri Lunar-kalender laten gebruiken?
Stel UseLunarCalendar = true in op de FieldDate, FieldCreateDate, FieldPrintDate of FieldSaveDate instantie, roep vervolgens Update() aan.
Welke van de vier klassen houdt bij wanneer een document voor het laatst is opgeslagen?
FieldSaveDate, die het SAVEDATE veld implementeert.
Ondersteunen deze klassen aangepaste opmaakafbeeldingen, niet alleen kalenderwisselaars?
Ja — elke exposeert een Format eigenschap (FieldFormat) geërfd van de basisveld-infrastructuur; zie de Veldresultaatopmaak handleiding voor NumericFormat and DateTimeFormat.
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
FieldDate | Implementeert het DATE veld |
FieldCreateDate | Implementeert het CREATEDATE veld |
FieldPrintDate | Implementeert het PRINTDATE veld |
FieldSaveDate | Implementeert het SAVEDATE veld |
UseLunarCalendar | Rendert het resultaat met behulp van de Hijri Lunar- of Hebrew Lunar-kalender |
UseSakaEraCalendar | Rendert het resultaat met behulp van de Saka Era-kalender |
UseUmAlQuraCalendar | Rendert het resultaat met behulp van de Um-al-Qura-kalender |
FieldDate.UseLastFormat | Gebruikt een formaat dat voor het laatst is gebruikt door de hosttoepassing voor een nieuw DATE veld |
IFieldWithCalendar | Interface geïmplementeerd door alle vier klassen voor kalenderbewuste veldresultaten |