Campos de fecha y hora
Campos de fecha y hora
Esta guía muestra cómo trabajar con las clases de campos de fecha y hora conscientes del calendario en Aspose.Words FOSS para .NET — FieldDate, FieldCreateDate, FieldPrintDate, y FieldSaveDate — que implementan los de Word DATE, CREATEDATE, PRINTDATE, y SAVEDATE campos respectivamente. Cada clase deriva de Field e implementa IFieldWithCalendar; para el modelo base Field del modelo de objetos en sí (actualizando, desvinculando, eliminando y formateando cualquier campo), consulte el Trabajando con campos guía.
Las cuatro clases de campos de fecha y hora
FieldDate implementa el campo DATE. FieldCreateDate implementa CREATEDATE, la fecha en que se creó el documento. FieldPrintDate implementa PRINTDATE, la fecha en que el documento se imprimió por última vez. FieldSaveDate implementa SAVEDATE, la fecha en que el documento se guardó por última vez. Las cuatro son subclases de Field e implementan IFieldCodeTokenInfoProvider y IFieldWithCalendar, por lo que comparten los GetFieldCode(), Update(), Unlink(), Remove() y de formato (Format) de Field, junto con sus propios conmutadores de calendario descritos a continuación.
Seleccionar un calendario no gregoriano
Cada una de las cuatro clases expone UseLunarCalendar (bool) para generar el resultado usando el calendario lunar hijri o el calendario lunar hebreo, UseSakaEraCalendar (bool) para el calendario de la era Saka, y UseUmAlQuraCalendar (bool) para el calendario Um-al-Qura. Establezca la propiedad correspondiente a true antes de llamar a Update() para que el campo recalcule su resultado usando ese sistema de calendario en lugar del calendario gregoriano predeterminado.
Conmutador de aplicación-formato de FieldDate
FieldDate también expone UseLastFormat (bool), lo que controla si el campo usa un formato usado por última vez por la aplicación anfitriona cuando se inserta un nuevo campo DATE. FieldCreateDate, FieldPrintDate y FieldSaveDate no exponen esta propiedad.
Consejos y Buenas Prácticas
- Establezca un interruptor de calendario (
UseLunarCalendar,UseSakaEraCalendaroUseUmAlQuraCalendar) y luego llame aUpdate()en el campo — cambiar solo la propiedad no recalculaResult. - Establezca solo un interruptor de calendario en
trueen una instancia de campo dada; combinar más de uno produce un resultado ambiguo. - Usar
Field.Format(unFieldFormat, cubierto en el Formato de resultados de campo guía) junto a estos interruptores de calendario para también controlar la imagen de formato numérico o de fecha/hora aplicada al resultado. - Elija la clase que coincida con la semántica que necesita —
FieldSaveDateyFieldPrintDateleen marcas de tiempo registradas en el documento, mientras queFieldDaterefleja la fecha en que se actualiza el campo.
Problemas Comunes
| Problema | Causa | Solución |
|---|---|---|
| El interruptor de calendario no tiene efecto en el resultado mostrado | El campo no se recalculó después de que se estableció la propiedad | Llame a Update() en la instancia del campo después de establecer UseLunarCalendar, UseSakaEraCalendar o UseUmAlQuraCalendar |
UseLastFormat no se compila en FieldPrintDate o FieldSaveDate | Esa propiedad solo existe en FieldDate | Use FieldDate para el comportamiento application-format-follows, o establezca Format explícitamente en las demás clases |
| El resultado muestra el sistema de calendario incorrecto | Más de un interruptor de calendario estaba configurado a true en el mismo campo | Establezca solo uno de UseLunarCalendar, UseSakaEraCalendar, UseUmAlQuraCalendar por instancia de campo |
FAQ
¿Cuál es la diferencia entre FieldDate y FieldCreateDate?
FieldDate implementa el campo DATE (recalcula a la fecha actual cada vez que se actualiza); FieldCreateDate implementa CREATEDATE (la fecha en que se creó el documento).
¿Cómo hago que un campo de fecha use el calendario lunar hijri?
Establece UseLunarCalendar = true en la instancia FieldDate, FieldCreateDate, FieldPrintDate o FieldSaveDate, luego llama a Update().
¿Cuál de las cuatro clases rastrea cuándo se guardó por última vez un documento?
FieldSaveDate, que implementa el campo SAVEDATE.
¿Estas clases admiten imágenes de formato personalizado, no solo conmutadores de calendario?
Sí — cada uno expone un Format propiedad (FieldFormat) heredada de la infraestructura base del campo; vea la Formateo de resultados del campo guía para NumericFormat and DateTimeFormat.
API Reference Resumen
| Clase/Método | Descripción |
|---|---|
FieldDate | Implementa el campo DATE |
FieldCreateDate | Implementa el campo CREATEDATE |
FieldPrintDate | Implementa el campo PRINTDATE |
FieldSaveDate | Implementa el campo SAVEDATE |
UseLunarCalendar | Renderiza el resultado usando el calendario lunar hijri o el calendario lunar hebreo |
UseSakaEraCalendar | Renderiza el resultado usando el calendario de la era Saka |
UseUmAlQuraCalendar | Renderiza el resultado usando el calendario Um-al-Qura |
FieldDate.UseLastFormat | Utiliza un formato usado por última vez por la aplicación de alojamiento para un nuevo campo DATE |
IFieldWithCalendar | Interfaz implementada por las cuatro clases para resultados de campo con conocimiento del calendario |