PHP - automatizar formato de fecha

   
Vista:

automatizar formato de fecha

Publicado por jose (1 intervención) el 20/01/2018 06:30:54
Buenos días a todos,

Estoy intentando crear un código para que de forma automática indique la diferencia de tiempo entre una fecha y la actual. Por ejemplo:

Si la diferencia es menor a 1 mes que muestre los días. "dias"
Si es igual a un mes que muestre "mes"
Si es >= a 2 y menor o <= 12 que muestre "meses"
Y si es superior a 12 meses pero igual a un año, que muestre "año"
Y si es superior a un año que muestre "años"

Os pongo el código que tengo hecho, pero me falla en años que marca 0 mes.

Alguien podría ayudarme con esto.

Muchas gracias,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
 
 
//Calcular fechas
function calcular_fecha($fecha){
$fecha_select = new DateTime(date('Y/m/d',strtotime($fecha))); // Creo un objeto DateTime de la fecha ingresada
$fecha_hoy =  new DateTime(date('Y/m/d',time())); // Creo un objeto DateTime de la fecha de hoy
// La funcion ayuda a calcular la diferencia, esto seria un objeto
 
$Actual = date_diff($fecha_hoy,$fecha_select);
 
return $Actual;
}
 
function dias_totales($fecha_i)
{
  	$dias	= (strtotime($fecha_i)-time())/86400;
	$dias 	= abs($dias); $dias = floor($dias);
	return $dias;
}
$Edad = calcular_fecha('1972-11-20');
$Experiencia = calcular_fecha('2002-10-20');
$Laboral = calcular_fecha('1990-02-01');
 
//Cambiar las dos fechas de $Actual y Actualdays para automatizar
$Actual = calcular_fecha('2016-01-08');
$Actualmes = $Actual->format('%m');
$Actualdays = dias_totales('2016-01-08');
?>
<html>
 
<?php
if ($Actualdays <= 30) {
  echo $Actualdays." días";
 
	}	elseif ($Actualmes <= 1){
	echo $Actual->format('%m')." mes";
 
	}	elseif ($Actualmes >= 2 && $Actualmes <= 12){
	echo $Actual->format('%m')." meses";
 
	}	elseif ($Actualdays > 365){
	echo $Actual->format('%Y')." años";
}
 
?>
 
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Revisar política de publicidad