Progress – Funções e rotinas para trabalhar com datas

Algumas funções básicas de tratamento de datas

DEFINE VARIABLE primeiroDia AS DATE NO-UNDO.
DEFINE VARIABLE ultimoDia AS DATE NO-UNDO.

/* 1º dia do mês */
assign primeiroDia = today - day(today) + 1.

/* Ultimo dia mês */
assign ultimoDia = add-interval(today,1,"month") - day(today).

MESSAGE ultimoDia
    VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.

/* Intervalo entre datas {'years' | 'months' | 'weeks'| 'days' | 'hours', 'minutes' | 'seconds' | 'milliseconds'} */
MESSAGE
    interval(today,primeiroDia,"days")
    VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.

/* Adicionar intervalo de tempo {'years' | 'months' | 'weeks'| 'days' | 'hours', 'minutes' | 'seconds' | 'milliseconds'} */
MESSAGE 
    add-interval(primeiroDia,5,"days")
    VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.

Percorrer datas entre intervalo de datas

DEFINE VARIABLE dat AS DATE NO-UNDO.

do dat = date("01/06/2022") to date("05/06/2022"):
    MESSAGE dat
    VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
end.

Função para mostrar o numero da semana no ano

function WeekNumberYear returns integer ( ptDate as date ):
    define variable nrDias as int no-undo.
    define variable datAux as date no-undo.

    /* Quantidade de dias desde o inicio do ano */
    datAux = date( 1, 1, year( ptDate ) ) + 1.

    /* Agora a quantidade de dias + a posição do primeiro dia na semana*/
    nrDias = ptDate - datAux + weekday(datAux).

    /* Calculo para se obter a quantidade de semana, dividindo a quantidade de dias por 7 */
    return int( trunc( nrDias / 7, 0 ) ) + (if nrDias mod 7 <> 0 then 1 else 0).

end function.

Função para mostrar o numero da semana no mês

function WeekNumberMonth returns integer ( ptDate as date ):
    define variable nrDias as int no-undo.
    define variable datAux as date no-undo.

    /* dia 1º do mês */
    datAux = ptDate - day(ptDate) + 1.

    /* Agora a quantidade de dias + a posição do primeiro dia na semana*/
    nrDias = ptDate - datAux + weekday(datAux).

    /* Calculo para se obter a quantidade de semana, dividindo a quantidade de dias por 7 */
    return int( trunc( nrDias / 7, 0 ) ) + ( if nrDias mod 7 <> 0 then 1 else 0 ).

end function.

Quarter

function QuarterNumber returns integer ( ptDate as date ):
    define var iMonth as int no-undo.

    iMonth = month( ptDate ).

    return int( trunc( iMonth / 3, 0 ) ) + ( if iMonth mod 3 <> 0 then 1 else 0 ).
end function.

Função para retornar o nome do Mês

FUNCTION nomeMes RETURNS CHARACTER (input mes as date) :
    DEFINE VARIABLE nome AS CHARACTER   NO-UNDO.

    CASE month(mes):
        WHEN 1 THEN assign nome = "Janeiro".
        WHEN 2 THEN assign nome = "Fevereiro".
        WHEN 3 THEN assign nome = "Março".
        WHEN 4 THEN assign nome = "Abril".
        WHEN 5 THEN assign nome = "Maio".
        WHEN 6 THEN assign nome = "Junho".
        WHEN 7 THEN assign nome = "Julho".
        WHEN 8 THEN assign nome = "Agosto".
        WHEN 9 THEN assign nome = "Setembro".
        WHEN 10 THEN assign nome = "Outubro".
        WHEN 11 THEN assign nome = "Novembro".
        WHEN 12 THEN assign nome = "Dezembro".
    END CASE.

    RETURN nome. /* Function return value. */

END FUNCTION.

Função para retornar o nome do dia na semana

FUNCTION nomeDia RETURNS CHARACTER (input pData as date) :
    DEFINE VARIABLE nome AS CHARACTER   NO-UNDO.

    CASE weekday(pData):
        WHEN 1 THEN assign nome = "Domingo".
        WHEN 2 THEN
 assign nome = "Segunda".
        WHEN 3 THEN assign nome = "Terça".
        WHEN 4 THEN assign nome = "Quarta".
        WHEN 5 THEN assign nome = "Quinta".
        WHEN 6 THEN assign nome = "Sexta".
        WHEN 7 THEN assign nome = "Sábado".
    END CASE.

    RETURN nome. /* Function return value. */

END FUNCTION.

Algumas dessas funções foram originalmente postadas no progresstak

Para mais conteúdos relacionado clique aqui.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.