Проверка даты JQuery


Привет Доброе утро у меня есть следующая функция, которая проверяет даты без " / " Пример 010218 который будет 01/02/2018, также если приходят только 4 символа я добавляю через php год . Очевидно, что дата я собираю по .substr. Помощь, в которой я нуждаюсь, будет ограничивать завтрашний день. Например, если сегодня 13/04/2018 (130418) вы не можете добавить дату выше этого дня . Пример на следующий день (140418). Большое спасибо!

function ValidarF() {

var date1Var = $("#Fecha").val();
var date1;
var mes = date1Var.toString().substr(2,2);       
var dias = date1Var.toString().substr(0,2);
var anio = date1Var.toString().substr(4,2);
 //Si vienen 3 caracteres tiro error.
if(date1Var.length==3)
{
swal("","Fecha incorrecta","warning"); 
}
 //Hago lo mismo con 5.
if(date1Var.length==5)
{
swal("","Fecha incorrecta","warning"); 
}
if(date1Var.length==4)
{
//En este caso valido que el mes sea el rango de 1 a 12 y dias de 1 a 31
if (mes<1 ||mes>12 || dias<1 ||dias>31)
{
swal("","Fecha incorrecta","warning");   
}
}

if(date1Var.length==6)
{ 

if (mes<1 || mes>12 || dias<1 ||dias>31)
{
swal("","Fecha incorrecta","warning");  
}

}
//Seteo el año hasta 2018
if (date1='20'+anio>2018)
{
swal("","Fecha incorrecta","warning");  
}

}

PHP :

$date1Var = $_REQUEST["Fecha"];
if(strlen($date1Var)==4) {
$date1=date("Y").'-'.substr($date1Var,2,2).'-'.substr($date1Var,0,2);

} elseif(strlen($date1Var)==6) {
$date1='20'.substr($date1Var,4,2).'-'.substr($date1Var,2,2).'-'.substr($date1Var,0,2);
} else { 
$date1 = date('Y-m-d');
}

 1
Author: Nacho Carpintero, 2018-04-13

2 answers

После всех проверок ваша дата должна быть отформатирована dias-mes-anio. Вы можете построить объект Date, передав ему строку в формате anio-mes-dias, и убедитесь, что timestamp этого объекта не больше, чем сегодня.

var fecha_bonita='01-04-2018';
var fecha_objeto=new Date('2018-04-01');
if(fecha_objeto.getTime() > Date.now() ) {
  console.warn('Fecha no puede ser mayor a hoy');
}

function ValidarF() {

var validada=jQuery('#validada');
var date1Var = $("#fecha").val();
var date1;
var mes = date1Var.toString().substr(2,2);       
var dias = date1Var.toString().substr(0,2);
var anio = date1Var.toString().substr(4,2);
 //Si vienen 3 caracteres tiro error.
if(date1Var.length!==4 && date1Var.length!==6) {
  validada.text("Fecha debe contener 4 o 6 dígitos"); 
  return;
}

if(date1Var.length==4) {
  $("#fecha").val(date1Var+'18');
  anio='18'
}

if (mes<1 || mes>12 || dias<1 ||dias>31)  {
    validada.text("Mes debe ser entre 01 y 12, dias entre 01 y 31");  
    return;
}

anio='20'+anio;
//Seteo el año hasta 2018
if (anio>2018) {
  validada.text("Año no puede ser mayor a 2018");  
  return;
}
var fecha_formateada=[dias,mes,anio].join('-');
var fecha_iso = [anio,mes,dias].join('-');
var date=new Date(fecha_iso);

if(date.getTime()>Date.now()) {
  validada.text("Fecha no puede ser mayor a hoy");  
  return;
}
validada.text(fecha_formateada);

}

$(document).on('click','#validar',function() {
  ValidarF();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button id="validar">Validar Fecha</button>
<br>
<div>
Ingrese fecha:
<input type="text" id="fecha"/>
</div>
<br>
<div>
Fecha validada:
<span id="validada"></div>
</div>
 2
Author: ffflabs, 2018-04-13 11:15:15

Вот часть проверки на следующий день, я изменил substring даты, чтобы я мог адаптировать ее к объекту Date Javascript.

var date1Var = "13/04/2018";

var dias = date1Var.toString().substr(0,2); // 13
var mes = date1Var.toString().substr(3,2); // 04      
var anio = date1Var.toString().substr(6,4); // 2018

var fecha = new Date(anio, mes, dias, 0, 0, 0, 0); // 13/04/2018
var fechaDiaSiguiente = new Date(anio, mes, dias + 1, 0, 0, 0, 0); /1404/2018

if(fechaDiaSiguiente > fecha) {
  /// La fecha es mayor por lo que aqui haces algo
  swal("","Fecha incorrecta","warning"); 
}
 2
Author: Emiliano Montesdeoca, 2018-04-13 10:55:04