Em muitos sistemas e aplicações, é crucial garantir que as datas inseridas pelos usuários sejam válidas e façam sentido dentro do contexto em uso. Seja para agendamentos, registros históricos, ou análises temporais, uma data inválida pode causar erros significativos ou confusões. Para lidar com isso, desenvolvemos uma função de verificação de data válida em JavaScript.

Esta função, validateDate, serve como um mecanismo de verificação robusto. Ela não apenas confirma se a data inserida está em um formato aceitável, mas também verifica a validade lógica da mesma. A função considera:

Se qualquer uma dessas verificações falhar, a função identifica e retorna uma mensagem indicando especificamente qual parte da data é inválida. Isso não só impede o processamento de datas inexistentes, como também fornece feedback útil para o usuário ou o sistema.

Essa abordagem é extremamente útil em formulários web, sistemas de reserva, e qualquer aplicação onde a data seja um componente crítico. Ao assegurar a validade das datas na entrada, reduzimos a probabilidade de erros e inconsistências nos dados.

PASSO 1: Estruturação do fluxo

O primeiro passo é você estruturar os componentes de pergunta aberta, código Javascript , condicional e mensagem de texto, o fluxo ficará nesse formato:

Untitled

PASSO 2: PARAMETRIZAÇÃO DOS COMPONENTES

A pergunta aberta, iremos configurar conforme a imagem

Untitled

O código Javascript, iremos configurar conforme a imagem(o código está abaixo da imagem):

Untitled

Código em JS → Copie e cole

function validateDateFromString(dateStr) {
    // Divide a string de data usando '/' ou '.'
    const parts = dateStr.split(/\\/|\\./);

    // Verifica se a string de data possui três partes (dia, mês, ano)
    if (parts.length !== 3) {
        return "Formato de data inválido";
    }

    let day = parseInt(parts[0], 10);
    let month = parseInt(parts[1], 10);
    let year = parseInt(parts[2], 10);

    // Ajusta o ano se estiver no formato de dois dígitos
    if (year < 100) {
        year += year < 70 ? 2000 : 1900; // Supõe que 00-69 pertencem ao século 21, e 70-99 ao século 20
    }

    // Validação da data
    if (year < 0 || year > 9999) {
        return "Ano inválido";
    }
    if (month < 1 || month > 12) {
        return "Mês inválido";
    }
    if (day < 1 || day > 31) {
        return "Dia inválido";
    }

    const date = new Date(year, month - 1, day);
    if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
        return "Data inexistente";
    }

    return "Data válida";
}

// Substituindo a variavel de uso
Merlin.setVariable('resultado',validateDateFromString("{{{data}}}"));