JSFiddle - React, Tailwind, and code Playground
HTML
<input type="text" value="" id="field" />
<input type="button" value="Buscar!" onclick="search()" />
<pre>Exs.:</pre>
<pre>01/01/2001</pre>
<pre>8 de Março de 2008</pre>
<pre>01 de Jan de 2017</pre>
<pre>4/Agosto/1995</pre>
<pre>12 Julho 1995</pre>
<pre>fev/2007 que seria o equivalente a 1/2/2007</pre>
<pre>10/1998 que seria o equivalente a 1/10/1998</pre>
/\ Tente em qualquer um desses formatos :).
Não funciona no padrão Americano: 25/02/2001, 10/10/2015
JavaScript
function search() {
try {
// Recebe a data escrita no campo field
dataSend = document.getElementById('field').value;
// Se a data tiver menos que 8 caracteres, retorna erro
if (dataSend.length < 7) {
throw new Error('Entre com uma data');
}
// Chama a função que remove os caracteres nao necessarios e retorna o timestamp
dataSend = returnTimestamp(dataSend);
// Recebe datas que podem estar em qualquer um dos formatos especificados, pode vir do banco, de um webserver ou qualquer lugar
datesInRange = ["01/01/2001", "8 de Março de 2008", "01 de Jan de 2017", "4/Agosto/1995", "12 Julho 1995","fev/2007","10/1998"];
// Inicializo o array que vai receber os timestamps das datas
timestampsInRange = [];
// Para cada elemento dentro das datas recebidas....
for (i = 0; i < datesInRange.length; i++) {
// Chama a função que remove os caracteres nao necessarios e retorna o timestamp
timestampConvert = returnTimestamp(datesInRange[i]);
// Adiciono o timestamp no array
timestampsInRange.push(timestampConvert);
}
// Verifico se o timestamp enviado existe no array de timestamps
var exist = timestampsInRange.indexOf(dataSend);
if (exist >= 0) {
alert("valor encontrado");
} else {
alert("valor não encontrado");
}
}catch(err) {
alert("Provavelmente a data que tentou pesquisar não é válida");
}
}
// Função remove um elemento especificado
function removeValue(index, arr) {
arr.splice(index, 1);
}
// Função que faz a conversão de date para timestamp, recebe um array por default
function convertDateToTimestamp(dateToConvert) {
// Assume que esta no formato mes/ano
if (dateToConvert.length == 2) {
dateToConvert.unshift("01");
}
// Se a data foi enviada por extenso....
if (dateToConvert[1].length > 3) {
// Pego somente o inicio dela
dateToConvert[1] = dateToConvert[1].substring(0, 3);
}
// Envio a variavel para a função que vai me...