Como criar uma fórmula para calcular uma data

Este tópico explica como construir uma fórmula para calcular uma data anterior ou posterior a outra data estabelecida, ou um período de tempo baseado em duas datas fornecidas.

Por exemplo, para calcular uma data anterior ou posterior, considere o seguinte formulário (veja abaixo), em que são especificados uma data de início para uma atividade e um número de dias para que ela expire. O valor do terceiro campo é calculado baseado nos valores dos dois campos anteriores.

 

 

Nesse exemplo, o campo Data de Início é um atributo do tipo Data/Hora, e o campo Validade (Dias) é um atributo do tipo Número. Já o campo Data de Expiração é um atributo do tipo Fórmula com saída Data/Hora, que se baseia nos valores dos dois campos anteriores e que segue a estrutura abaixo.

#AjusteData = ((@data_inicio==null) ? DateTime.Today : @data_inicio);

#data_de_expiracao = ((@dias_expiracao>0)? #AjusteData.AddDays( @dias_expiração ) : #AjusteData);

#data_de_expiracao

 

Nesse caso, o número de dias informado no campo Validade (Dias) será acrescentado à data especificada no campo Data de Início. Isso significa que se um valor negativo for inserido nesse campo, a fórmula calculará uma data passada. Caso nenhuma data seja definida no campo Data de Início, será considerada o dia atual. Se o campo Validade (Dias) estiver em branco, será retornado o valor do campo Data de Início.

Por outro lado, para calcular um período de tempo, considere o exemplo abaixo.

 

 

 

Nesse exemplo, os campos Data de Início Previsto e Data de Término Previsto são atributos do tipo Data/Hora, com a opção de exibir somente uma data selecionada. Por outro lado, os campos Hora de Início Previsto e Hora de Término Previsto também são atributos do tipo Data/Hora, porém com a opção de exibir somente uma hora selecionada transformada em TimeSpan. Já o campo Duração Prevista é um atributo do tipo Fórmula com saída texto que se baseia nos valores dos quatro campos anteriores e que segue a estrutura abaixo. Observe que, para que o resultado da fórmula seja exibido em horas, é necessário utilizar a função ToString para transformar o valor do atributo em um texto com formato em hora, conforme exibido na última linha da fórmula.

#DataTotal = (@DataTerminoPrevisto - @DataInicioPrevisto);

#HoraTotal = (@HoraTerminoPrevisto - @HoraInicioPrevisto);

#total = #DataTotal.Add(#HoraTotal);

T(System.Math).Truncate(#total.HoraTotal).ToString('00') + #total.ToString('\\:mm')

 

Nota: para mais informações sobre a estrutura DateTime e suas funções, acesse o site https://msdn.microsoft.com/pt-br/library/system.datetime(v=vs.110).aspx.