Números e datas por extenso em JavaScript

Veja alguns exemplos de como fazer isso com JavaScript

Neste texto você vai aprender como exibir uma data por extenso em JavaScript sem a necessidade de bibliotecas, e como escrever um número por extenso.

Vamos começar primeiro com a data por extenso.

Para fazer isso, você vai criar dois arrays, um array para os meses, e um array para os dias da semana.

meses = new Array("Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");

semana = new Array("Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado");

Vamos receber uma data no formato DD/MM/AAAA e vamos fazer esta conversão. Para nos ajudar, vamos utilizar o objeto Date. Para utilizar este objeto, temos que criar uma instância. Vamos passar como parâmetro a nossa data, porém, é necessário informar a data no formato AAAA-MM-DD. 

Para fazer a conversão da data de DD/MM/AAAA para AAAA-MM-DD, vamos quebrar a data informada num array, usando a "/" como separador, para isso, vamos usar o método "split" que existe em todas as strings. Depois disso, basta criar uma nova string na ordem desejada.

var dia_informado = data_informada.split('/')[0];

var mes_informado = data_informada.split('/')[1];

var ano_informado = data_informada.split('/')[2];

var data = ano_informado + '-' + mes_informado + '-' + dia_informado + " 00:00:00";

var dataInfo = new Date(data);

Uma vez criada a instância do objeto Date com a nossa string no formato AAAA-MM-DD, podemos extrair as informações da data utilizando os seguintes métodos:

getDate - Retorna o dia da data informada.

getDay - Retorna um número de 0 a 6 referente ao dia da semana, sendo 0 igual a domingo e 6 igual a sábado.

getMonth - Retorna um número de 0 a 11 referente ao mês do ano, sendo 0 igual a janeiro e 11 igual a novembro.

getFullYear - Retorna o ano da data informada.

Agora basta utilizar os resultados obtidos em getDay e getMonth e retornar a posição daquele número dentro dos arrays de semana e mês. Nosso código final fica da seguinte forma:

function DataExtenso(data_informada) {

meses = new Array("Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");

semana = new Array("Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado");

var dia_informado = data_informada.split('/')[0];

var mes_informado = data_informada.split('/')[1];

var ano_informado = data_informada.split('/')[2];

var data = ano_informado + '-' + mes_informado + '-' + dia_informado + " 00:00:00";

var dataInfo = new Date(data);

 

var dia = dataInfo.getDate();

var dias = dataInfo.getDay();

var mes = dataInfo.getMonth();

var ano = dataInfo.getFullYear();

var diaext = semana[dias] + ", " + dia + " de " + meses[mes] + " de " + ano;

return diaext;

}

console.log(DataExtenso("30/10/2019"));

Agora vamos ver outro exemplo, como fazer um número por extenso de 0 a 99.

Para fazer por extenso de 0 a 19 basta criar um array com estes valores, e informar o número como posição do array

var numero = 5;

var auxiliar1 =   ["zero", "um", "dois", "três", "quatro", "cinco", "seis", "sete", "oito", "nove", "dez", "onze", "doze", "treze", "quatorze", "quinze", "dezesseis", "dezessete", "dezoito", "dezenove"];

console.log(auxiliar1[numero]);

O código começa a ficar mais complexo a partir daqui. Vamos criar um segundo array auxiliar com as dezenas:

var auxiliar2 = ["dez", "vinte", "trinta", "quarenta", "cinqüenta", "sessenta", "setenta", "oitenta", "noventa"];

Para estes casos onde o número é maior que 19 e menor que 100, vamos precisar quebrar cada dígito. Uma forma de fazer isso é converter o número em string e depois utilizar o método split para quebrar cada digito numa posição de array.

Se por exemplo, o número for 23, o "2" se refere ao vinte, que é o segundo elemento do array auxiliar 2. Como a posição do vinte neste array é a primeira, será necessário subtrair 1 deste resultado. Nosso código ficaria assim:

var numero = 23;

var temp = numero.toString().split('');

var primeiro_numero = temp[0];

var segundo_numero = temp[1];

var retorno = auxiliar2[primeiro_numero-1]  + " e " + auxiliar1[primeiro_numero];

console.log(retorno);

Perceba que pesquisamos o segundo dígito no primeiro array auxiliar. Se o segundo dígito for zero, essa pesquisa não é necessária, para isso, você pode criar uma condição no código utilizando a função IF.

O código completo ficaria da seguinte forma:

function Extenso(numero){

var retorno = "";

var auxiliar1 =   ["zero", "um", "dois", "três", "quatro", "cinco", "seis", "sete", "oito", "nove", "dez", "onze", "doze", "treze", "quatorze", "quinze", "dezesseis", "dezessete", "dezoito", "dezenove"];

var auxiliar2 = ["dez", "vinte", "trinta", "quarenta", "cinqüenta", "sessenta", "setenta", "oitenta", "noventa"];

console.log(numero);

if  (numero > 99){

retorno = 'Não posso calcular';

} else {

if (numero < 20){

retorno = auxiliar1[numero];

} else {

var temp = numero.toString().split('');

var primeiro_numero = temp[0];

var segundo_numero = temp[1];

retorno = auxiliar2[primeiro_numero-1] 

if (segundo_numero > 0){

retorno += " e " + auxiliar1[primeiro_numero];

}

}

}

return retorno;

}

console.log(Extenso(20));

 

Quer conferir mais dicas sobre JavaScript? Clique aqui e veja mais dicas!