Module: @nginstack/engine/lib/date/evaluateDateExpression


(require("@nginstack/engine/lib/date/evaluateDateExpression"))(expression, baseDate [, format])

Avalia uma expressão de data relativa a uma data base. Esta função é utilizada pela função module:@nginstack/engine/lib/date/parseDate e raramente precisará ser utilizada diretamente.

A expressão tem o formato [âncora][±N[unidade]]..., sem distinção entre maiúsculas e minúsculas e ignorando espaços.

Âncoras de dia, aplicadas antes dos deslocamentos:

  • h, 0 ou hoje: data base;
  • o ou ontem: dia anterior à data base;
  • a, amanhã ou amanha: dia seguinte à data base.

Nos formatos de mês e ano (DateFormat.MMYYYY), as âncoras de dia anterior e seguinte representam a data base.

Âncoras de período, aplicadas após os deslocamentos: i<unidade> (início) e f<unidade> (fim), onde a unidade pode ser w (semana ISO 8601, de segunda-feira a domingo), m (mês), t (trimestre), s (semestre) ou a (ano). Exemplo: fm-1m é o último dia do mês anterior.

Deslocamentos: +N ou -N seguido opcionalmente de uma unidade: d (dias), w (semanas), m (meses), t (trimestres), s (semestres) ou a (anos). Quando a unidade não é informada, são considerados meses no formato DateFormat.MMYYYY, semanas no formato DateFormat.WWYYYY e dias nos demais formatos. Deslocamentos em meses que resultem em um dia inexistente são ajustados para o último dia do mês, como 31/03 -1m = 28/02 ou 29/02.

Parameters:
Name Type Argument Description
expression string

Expressão de data.

baseDate Date

Data base da expressão. Deve estar sem a parte de horas.

format DateFormat <optional>

Formato do campo. Determina a unidade dos deslocamentos informados sem unidade. O padrão é DateFormat.DDMMYYYY.

Throws:

Caso o texto inicie com "+" ou "-" e não seja uma expressão válida.

Type
Error
Returns:

Data resultante ou null caso o texto informado não seja uma expressão, como uma data digitada.

Type
Date | null

Members


<inner, constant> dayAnchors :Record.<string, number>

Deslocamento em dias das âncoras que representam um dia relativo à data base.

Type:
  • Record.<string, number>

<inner, constant> monthsByUnit :Object.<string, number>

Quantidade de meses de cada unidade de período.

Type:
  • Object.<string, number>

Methods


<inner> applyOffset(date, amount, unit)

Aplica um deslocamento à data.

Parameters:
Name Type Description
date Date
amount number
unit string
Returns:
Type
Date

<inner> createDate(year, month, day)

Cria uma data sem a parte de horas, contornando os dias em que a meia-noite não existe devido ao horário de verão.

Parameters:
Name Type Description
year number
month number
day number
Returns:
Type
Date

<inner> getDefaultUnit(format)

Obtém a unidade que deve ser utilizada nos deslocamentos informados sem unidade, preservando o comportamento histórico da função parseDate.

Parameters:
Name Type Description
format DateFormat
Returns:
Type
string

<inner> snapToPeriod(date, unit, end)

Obtém o primeiro ou o último dia do período que contém a data.

Parameters:
Name Type Description
date Date
unit string

Unidade do período: "w", "m", "t", "s" ou "a".

end boolean

Indica se deve ser retornado o último dia do período.

Returns:
Type
Date