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 e também como exibir número 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));