Campos de Data e Hora

Campos de Data e Hora

Este guia mostra como trabalhar com as classes de campo de data e hora sensíveis ao calendário em Aspose.Words FOSS para .NET — FieldDate, FieldCreateDate, FieldPrintDate, e FieldSaveDate — que implementam o Word DATE, CREATEDATE, PRINTDATE, e SAVEDATE campos, respectivamente. Cada classe deriva de Field e implementa IFieldWithCalendar; para o modelo base Field do modelo de objeto em si (atualizando, desvinculando, removendo e formatando qualquer campo), veja o Trabalhando com Campos guia.


As Quatro Classes de Campos de Data e Hora

FieldDate implementa o campo DATE. FieldCreateDate implementa CREATEDATE, a data em que o documento foi criado. FieldPrintDate implementa PRINTDATE, a data em que o documento foi impresso pela última vez. FieldSaveDate implementa SAVEDATE, a data em que o documento foi salvo pela última vez. Todos os quatro são subclasses de Field e implementam IFieldCodeTokenInfoProvider e IFieldWithCalendar, portanto compartilham os GetFieldCode(), Update(), Unlink(), Remove() e os membros de formatação (Format) de Field, além de seus próprios interruptores de calendário descritos abaixo.


Selecionando um Calendário Não-Gregoriano

Cada uma das quatro classes expõe UseLunarCalendar (bool) para renderizar o resultado usando o calendário Lunar Hijri ou o calendário Lunar Hebraico, UseSakaEraCalendar (bool) para o calendário da Era Saka e UseUmAlQuraCalendar (bool) para o calendário Um-al-Qura. Defina a propriedade correspondente como true antes de chamar Update() para que o campo recalcule seu resultado usando esse sistema de calendário em vez do calendário gregoriano padrão.


Interruptor Application-Format de FieldDate

FieldDate também expõe UseLastFormat (bool), que controla se o campo usa um formato usado pela última vez pelo aplicativo host quando um novo campo DATE é inserido. FieldCreateDate, FieldPrintDate e FieldSaveDate não expõem essa propriedade.


Dicas e Melhores Práticas

  • Defina um interruptor de calendário (UseLunarCalendar, UseSakaEraCalendar ou UseUmAlQuraCalendar) e então chame Update() no campo — alterar apenas a propriedade não recalcula Result.
  • Defina apenas um interruptor de calendário para true em uma instância de campo específica; combinar mais de um produz um resultado ambíguo.
  • Use Field.Format (uma FieldFormat, coberto no Formatação de Resultado de Campo guia) ao lado desses interruptores de calendário para também controlar a imagem de formatação numérica ou de data/hora aplicada ao resultado.
  • Escolha a classe que corresponde à semântica que você precisa — FieldSaveDate e FieldPrintDate leem timestamps registrados no documento, enquanto FieldDate reflete a data em que o campo é atualizado.

Problemas Comuns

ProblemaCausaCorrigir
A troca de calendário não tem efeito no resultado exibidoO campo não foi recalculado após a propriedade ser definidaChame Update() na instância do campo após definir UseLunarCalendar, UseSakaEraCalendar ou UseUmAlQuraCalendar
UseLastFormat não compila em FieldPrintDate ou FieldSaveDateEssa propriedade existe apenas em FieldDateUse FieldDate para o comportamento application-format-follows, ou defina Format explicitamente nas outras classes
O resultado exibe o sistema de calendário erradoMais de um interruptor de calendário foi definido como true no mesmo campoDefina apenas um de UseLunarCalendar, UseSakaEraCalendar, UseUmAlQuraCalendar por instância de campo

FAQ

Qual é a diferença entre FieldDate e FieldCreateDate?

FieldDate implementa o campo DATE (recalcula para a data atual a cada atualização); FieldCreateDate implementa CREATEDATE (a data em que o documento foi criado).

Como faço para que um campo de data use o calendário lunar Hijri?

Defina UseLunarCalendar = true na instância FieldDate, FieldCreateDate, FieldPrintDate ou FieldSaveDate, então chame Update().

Qual das quatro classes rastreia quando um documento foi salvo pela última vez?

FieldSaveDate, que implementa o campo SAVEDATE.

Essas classes suportam imagens de formatação personalizada, não apenas alternâncias de calendário?

Sim — cada um expõe um Format propriedade (FieldFormat) herdada da infraestrutura básica do campo; veja a Formatação de Resultado de Campo guia para NumericFormat and DateTimeFormat.


API Reference Resumo

Classe/MétodoDescrição
FieldDateImplementa o campo DATE
FieldCreateDateImplementa o campo CREATEDATE
FieldPrintDateImplementa o campo PRINTDATE
FieldSaveDateImplementa o campo SAVEDATE
UseLunarCalendarRenderiza o resultado usando o calendário lunar Hijri ou o calendário lunar Hebraico
UseSakaEraCalendarRenderiza o resultado usando o calendário da Era Saka
UseUmAlQuraCalendarRenderiza o resultado usando o calendário Um-al-Qura
FieldDate.UseLastFormatUsa um formato usado anteriormente pela aplicação de hospedagem para um novo campo DATE
IFieldWithCalendarInterface implementada por todas as quatro classes para resultados de campo que consideram o calendário

Ver também

 Português