FUNCIONES PARA MANEJO DE FECHAS
Las fechas en Mysql se guardan de la forma aaaa-mm-dd hh:mm:ss ej: "2016-06-11 16:07:56 " para pasarlo a un formato más legible usamos:
$fechalegible = substr($feped,8,2)."/".substr($feped,5,2)."/".substr($feped,0,4);
Asimismo si tenemos una fecha (por ej del almanaque jquery) y la tenemos que pasar a sql usamos:
$fechasql=substr($valor,6,4)."-".substr($valor,3,2)."-".substr($valor,0,2);
Para quitar o agregar días a una fecha es:
date('d-m-Y', strtotime(fechasql(fecha-inicial)) + 86400*intval(días a adicionar));
  • Date es para darle formato final (para sql será Y-m-d)
  • strtotime para pasarlo a tiempo UNIX (segundos luego de 1/1/1970)
  • *86400 convierte los días en segundos
  • intval me asegura que días sea integer
La función fusql(fecha) pasa cualquier formato válido de fecha en español a fecha SQL. está explicada en el código
La fecha actual: date("Y-m-d H:i:s") si no interesa la hora solo date("Y-m-d").
						
     De fecha MySQL a fecha argentina con barra /

function fechaarg($f) {
	return substr($f,8,2) ."/". substr($f,5,2). "/" . substr($f,0,4);
}

      De fecha MySQL a fecha argentina con barra /

function fechaguion($f) {
	return substr($f,8,2) ."-". substr($f,5,2). "-" . substr($f,0,4);
}

      De fecha dd-mm aaaa o dd/mm/aaaa a MySQL

function fechasql($f) {
	return substr($f,6,4)."-".substr($f,3,2)."-".substr($f,0,2);
}

       De fecha dd-mm aaaa o d/m/aaaa o d-m-aa con/ o -  a MySQL

function fusql($f) {
	$d=strpos($f,"/",0);                //busco la posicion de "/"
	$sep="/";                           //asigno separador "/"
	if ($d === false){                  //si no está "/"
		$d=strpos($f,"-",0);            //busco posición de "-"
		$sep="-";                       //el separador es "-"
	}
	if($d==1){                          //si la pos de sep es 1  
		$dia = '0' . substr($f,0,1);    // día de 1 dígito, le agrego 0 delante
	}else{
		$dia = substr($f,0,2);
	}
	$f = substr($f,$d + 1);             //recorto los días y el 1º sep
	$m=strpos($f,$sep,0);               //busco la posicion del 2º sep
	if($m==1){                          //si la pos de sep es 1
		$mes = '0' . substr($f,0,1);    //mes de 1 dígito, le agrego 0 delante
	}else{
		$mes = substr($f,0,2);
	}
	$f = substr($f,$m + 1);             //recorto los meses me queda el año
	if(strlen($f)==4){                  //si tiene 4 dígitos queda así
		$anno = $f;
	}elseif((int)($f)<=50){             //si los dos dígitos son menor a 50
		$anno = '20' . $f;              //es siglo XXI
	}else{
		$anno = '19' . $f;              // si es mayor a 50 //es siglo XX
	}
	if(checkdate($mes,$dia,$anno)){		// si los valores son válidos
		return $anno."-".$mes."-".$dia; //devuelvo fecha SQL
	}else{
		return NULL;
	}
}
						
					
© IQSystems 2023