Campi Data e Ora
Campi Data e Ora
Questa guida mostra come lavorare con le classi di campo data e ora sensibili al calendario in Aspose.Words FOSS per .NET — FieldDate, FieldCreateDate, FieldPrintDate, e FieldSaveDate — che implementano Word’s DATE, CREATEDATE, PRINTDATE, e SAVEDATE campi rispettivamente. Ogni classe deriva da Field e implementa IFieldWithCalendar; per il modello di base Field del modello di oggetto stesso (aggiornamento, scollegamento, rimozione e formattazione di qualsiasi campo), vedere il Lavorare con i campi guida.
Le quattro classi di campo data e ora
FieldDate implementa il campo DATE. FieldCreateDate implementa CREATEDATE, la data di creazione del documento. FieldPrintDate implementa PRINTDATE, la data dell’ultima stampa del documento. FieldSaveDate implementa SAVEDATE, la data dell’ultimo salvataggio del documento. Tutte e quattro sono sottoclassi di Field e implementano IFieldCodeTokenInfoProvider e IFieldWithCalendar, quindi condividono i membri GetFieldCode(), Update(), Unlink(), Remove() e di formattazione (Format) di Field, insieme ai propri interruttori di calendario descritti di seguito.
Selezionare un calendario non gregoriano
Ciascuna delle quattro classi espone UseLunarCalendar (bool) per rendere il risultato usando il calendario lunare Hijri o il calendario lunare ebraico, UseSakaEraCalendar (bool) per il calendario dell’Era Saka e UseUmAlQuraCalendar (bool) per il calendario Um-al-Qura. Imposta la proprietà corrispondente su true prima di chiamare Update() per far ricalcolare al campo il suo risultato usando quel sistema di calendario invece del calendario gregoriano predefinito.
Interruttore Applicazione-Formato di FieldDate
FieldDate espone inoltre UseLastFormat (bool), che controlla se il campo utilizza un formato usato l’ultima volta dall’applicazione host quando viene inserito un nuovo campo DATE. FieldCreateDate, FieldPrintDate e FieldSaveDate non espongono questa proprietà.
Suggerimenti e Buone Pratiche
- Imposta un interruttore di calendario (
UseLunarCalendar,UseSakaEraCalendaroUseUmAlQuraCalendar) e poi chiamaUpdate()sul campo — modificare solo la proprietà non ricalcolaResult. - Imposta un solo interruttore di calendario su
trueper una determinata istanza del campo; combinare più di uno produce un risultato ambiguo. - Usa
Field.Format(unFieldFormat, trattato nella Formattazione del risultato del campo guida) insieme a questi interruttori del calendario per controllare anche l’immagine di formattazione numerica o data/ora applicata al risultato. - Scegli la classe che corrisponde alla semantica di cui hai bisogno —
FieldSaveDateeFieldPrintDateleggono i timestamp registrati nel documento, mentreFieldDateriflette la data in cui il campo viene aggiornato.
Problemi Comuni
| Problema | Causa | Correzione |
|---|---|---|
| Il cambio di calendario non ha effetto sul risultato visualizzato | Il campo non è stato ricalcolato dopo che la proprietà è stata impostata | Chiama Update() sull’istanza del campo dopo aver impostato UseLunarCalendar, UseSakaEraCalendar o UseUmAlQuraCalendar |
UseLastFormat non compila su FieldPrintDate o FieldSaveDate | Quella proprietà esiste solo su FieldDate | Usa FieldDate per il comportamento application-format-follows, oppure imposta Format esplicitamente sulle altre classi |
| Il risultato mostra il sistema di calendario errato | Più di un interruttore di calendario è stato impostato su true nello stesso campo | Imposta solo uno di UseLunarCalendar, UseSakaEraCalendar, UseUmAlQuraCalendar per istanza di campo |
FAQ
Qual è la differenza tra FieldDate e FieldCreateDate?
FieldDate implementa il campo DATE (ricalcola alla data corrente ogni volta che si aggiorna); FieldCreateDate implementa CREATEDATE (la data in cui il documento è stato creato).
Come faccio a far utilizzare al campo data il calendario lunare Hijri?
Imposta UseLunarCalendar = true sull’istanza FieldDate, FieldCreateDate, FieldPrintDate o FieldSaveDate, quindi chiama Update().
Quale delle quattro classi registra quando un documento è stato salvato per l’ultima volta?
FieldSaveDate, che implementa il campo SAVEDATE.
Queste classi supportano immagini di formattazione personalizzate, non solo gli switch del calendario?
Sì — ciascuno espone un Format proprietà (FieldFormat) ereditata dall’infrastruttura di base del campo; vedi la Formattazione del risultato del campo guida per NumericFormat and DateTimeFormat.
API Reference Riepilogo
| Classe/Metodo | Descrizione |
|---|---|
FieldDate | Implementa il campo DATE |
FieldCreateDate | Implementa il campo CREATEDATE |
FieldPrintDate | Implementa il campo PRINTDATE |
FieldSaveDate | Implementa il campo SAVEDATE |
UseLunarCalendar | Renderizza il risultato utilizzando il calendario lunare Hijri o il calendario lunare ebraico |
UseSakaEraCalendar | Renderizza il risultato utilizzando il calendario dell’Era Saka |
UseUmAlQuraCalendar | Renderizza il risultato utilizzando il calendario Um-al-Qura |
FieldDate.UseLastFormat | Utilizza un formato usato per l’ultima volta dall’applicazione di hosting per un nuovo campo DATE |
IFieldWithCalendar | Interfaccia implementata da tutte e quattro le classi per i risultati dei campi sensibili al calendario |