Pola daty i czasu
Pola daty i czasu
Ten przewodnik pokazuje, jak pracować z klasami pól daty i czasu uwzględniającymi kalendarz w Aspose.Words FOSS dla .NET — FieldDate, FieldCreateDate, FieldPrintDate, oraz FieldSaveDate — które implementują Word’s DATE, CREATEDATE, PRINTDATE, oraz SAVEDATE odpowiednio pola. Każda klasa dziedziczy po Field i implementuje IFieldWithCalendar; dla podstawowego Field modelu obiektowego (aktualizowanie, odłączanie, usuwanie i formatowanie dowolnego pola), zobacz the Praca z polami przewodnik.
Cztery klasy pól daty i czasu
FieldDate implementuje pole DATE. FieldCreateDate implementuje CREATEDATE, datę utworzenia dokumentu. FieldPrintDate implementuje PRINTDATE, datę ostatniego wydrukowania dokumentu. FieldSaveDate implementuje SAVEDATE, datę ostatniego zapisania dokumentu. Wszystkie cztery są podklasami Field i implementują IFieldCodeTokenInfoProvider oraz IFieldWithCalendar, więc dzielą członków Field: GetFieldCode(), Update(), Unlink(), Remove() oraz formatowanie (Format) opisane poniżej.
Wybór kalendarza niegregoriańskiego
Każda z czterech klas udostępnia UseLunarCalendar (bool), aby renderować wynik z użyciem kalendarza Hijri Lunar lub Hebrew Lunar, UseSakaEraCalendar (bool) dla kalendarza Saka Era oraz UseUmAlQuraCalendar (bool) dla kalendarza Um-al-Qura. Ustaw odpowiednią właściwość na true przed wywołaniem Update(), aby pole przeliczyło swój wynik przy użyciu tego systemu kalendarzowego zamiast domyślnego kalendarza gregoriańskiego.
FieldDate – przełącznik Application-Format
FieldDate dodatkowo udostępnia UseLastFormat (bool), które kontroluje, czy pole używa formatu ostatnio używanego przez aplikację hostującą, gdy wstawiane jest nowe pole DATE. FieldCreateDate, FieldPrintDate i FieldSaveDate nie udostępniają tej właściwości.
Wskazówki i najlepsze praktyki
- Ustaw przełącznik kalendarza (
UseLunarCalendar,UseSakaEraCalendarlubUseUmAlQuraCalendar) i następnie wywołajUpdate()na polu — zmiana samej właściwości nie przeliczaResult. - Ustaw tylko jeden przełącznik kalendarza na
truew danej instancji pola; łączenie więcej niż jednego powoduje niejednoznaczny wynik. - Użyj
Field.Format(aFieldFormat, zawarte w Formatowanie Wyników Pola przewodnik) wraz z tymi przełącznikami kalendarza, aby również kontrolować obraz formatowania liczbowego lub daty/czasu zastosowanego do wyniku. - Wybierz klasę, która odpowiada potrzebnej semantyce —
FieldSaveDateiFieldPrintDateodczytują znaczniki czasu zapisane w dokumencie, podczas gdyFieldDateodzwierciedla dowolną datę, kiedy pole jest aktualizowane.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
| Przełącznik kalendarza nie ma wpływu na wyświetlany wynik | Pole nie zostało przeliczone po ustawieniu właściwości | Wywołaj Update() na instancji pola po ustawieniu UseLunarCalendar, UseSakaEraCalendar lub UseUmAlQuraCalendar |
UseLastFormat nie kompiluje się na FieldPrintDate lub FieldSaveDate | Ta właściwość istnieje tylko w FieldDate | Użyj FieldDate dla zachowania application-format-follows lub ustaw Format jawnie w pozostałych klasach |
| Wynik pokazuje niewłaściwy system kalendarzowy | Więcej niż jeden przełącznik kalendarza zostało ustawione na true w tym samym polu | Ustaw tylko jedną z UseLunarCalendar, UseSakaEraCalendar, UseUmAlQuraCalendar na jedną instancję pola |
FAQ
Jaka jest różnica między FieldDate a FieldCreateDate?
FieldDate implementuje pole DATE (przelicza na bieżącą datę za każdym razem, gdy się aktualizuje); FieldCreateDate implementuje CREATEDATE (datę utworzenia dokumentu).
Jak sprawić, aby pole daty używało kalendarza Hijri Lunar?
Ustaw UseLunarCalendar = true w instancji FieldDate, FieldCreateDate, FieldPrintDate lub FieldSaveDate, a następnie wywołaj Update().
Która z czterech klas śledzi, kiedy dokument został ostatnio zapisany?
FieldSaveDate, który implementuje pole SAVEDATE.
Czy te klasy obsługują własne obrazy formatowania, a nie tylko przełączniki kalendarza?
Tak — każdy udostępnia a Format właściwość (FieldFormat) odziedziczona z podstawowej infrastruktury pola; zobacz the Formatowanie Wyników Pola przewodnik dla NumericFormat and DateTimeFormat.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
FieldDate | Implementuje pole DATE |
FieldCreateDate | Implementuje pole CREATEDATE |
FieldPrintDate | Implementuje pole PRINTDATE |
FieldSaveDate | Implementuje pole SAVEDATE |
UseLunarCalendar | Renderuje wynik przy użyciu kalendarza księżycowego Hijri lub kalendarza księżycowego hebrajskiego |
UseSakaEraCalendar | Renderuje wynik przy użyciu kalendarza Saka Era |
UseUmAlQuraCalendar | Renderuje wynik przy użyciu kalendarza Um-al-Qura |
FieldDate.UseLastFormat | Używa formatu ostatnio używanego przez aplikację hostującą dla nowego pola DATE |
IFieldWithCalendar | Interfejs zaimplementowany przez wszystkie cztery klasy dla wyników pól zależnych od kalendarza |