Calculando uma data no futuro ou passado

Elm:
Calculando uma data no futuro ou passado

Como fazer:

import Time exposing (Posix)
import Date
import Date.Extra as DateExtra

-- Definindo uma data de partida (Hoje: 1º de abril de 2023)
hoje : Posix
hoje = Date.fromIsoString "2023-04-01" |> Result.withDefault Date.beginning

-- Calculando uma semana no futuro
umaSemanaNoFuturo : Posix
umaSemanaNoFuturo = DateExtra.add DateExtra.Day 7 hoje

-- Calculando uma semana no passado
umaSemanaNoPassado : Posix
umaSemanaNoPassado = DateExtra.add DateExtra.Day -7 hoje

-- Saídas
Date.toIsoString umaSemanaNoFuturo  -- "2023-04-08"
Date.toIsoString umaSemanaNoPassado  -- "2023-03-25"

Mergulho Profundo

Calcular datas no futuro ou no passado é uma necessidade comum em programação desde o princípio dos computadores. Elm, sendo uma linguagem funcional que foca em segurança de tipo e ausência de efeitos colaterais, usa tipos específicos para datas (Date e Posix) e funções do pacote Date.Extra para manipulá-las. Alternativas incluem a manipulação manual dos milissegundos desde a época Unix (Epoch), mas isso pode resultar em erros de cálculo devido a questões como horário de verão e fusos horários. A abordagem de Elm é segura e legível, mas requer a instalação de pacotes adicionais para funcionalidades extras de data, como justinmimbs/date.

Veja também