Foros del Web » Programando para Internet » PHP » Configuración PHP »

[SOLUCIONADO] automatizar formato de fecha

Estas en el tema de automatizar formato de fecha en el foro de Configuración PHP en Foros del Web. 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. ...
  #1 (permalink)  
Antiguo 21/01/2018, 01:17
 
Fecha de Ingreso: noviembre-2013
Ubicación: Barcelona
Mensajes: 31
Antigüedad: 4 años, 10 meses
Puntos: 0
automatizar formato de fecha

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,

Código PHP:
<?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 >= && $Actualmes <= 12){

    echo 
$Actual->format('%m')." meses";

 

    }    elseif (
$Actualdays 365){

    echo 
$Actual->format('%Y')." años";

}

 

?>

 

</html>
  #2 (permalink)  
Antiguo 21/01/2018, 13:11
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.372
Antigüedad: 3 años, 2 meses
Puntos: 253
Respuesta: automatizar formato de fecha

Prueba este:
Código PHP:
Ver original
  1. function Hace($X){
  2.         $lan = "es";
  3.         $data = array(
  4.             'es'=>array('HSEGUNDOS'=>'Hace segundos','HMINUTO'=>'Hace un minuto','HMINUTOS'=>'Hace %min% minutos','HHORA'=>'Hace una hora','HHORAS'=>'Hace %hor% horas','HDIA'=>'Hace un día','HDIAS'=>'Hace %dia% días','HSEMANA'=>'Hace una semana','HSEMANAS'=>'Hace %sem% semanas','HMES'=>'Hace un mes','HMESES'=>'Hace %mes% meses','HANO'=>'Hace un año','HANOS'=>'Hace %ano% años'),
  5.  
  6.             'en'=>array('es'=>array('HSEGUNDOS'=>'Second ago','HMINUTO'=>'Minute ago','HMINUTOS'=>'Minutes %min% ago','HHORA'=>'One hour ago','HHORAS'=>' %hor% hours ago','HDIA'=>'A day ago','HDIAS'=>'%dia% days ago','HSEMANA'=>'A week ago','HSEMANAS'=>'%sem% weeks ago','HMES'=>'A month ago','HMESES'=>'%mes% months ago','HANO'=>'A year ago','HANOS'=>'%ano% years ago'),)
  7.             );
  8.  
  9.             $fecha = strtotime($X);
  10.  
  11.                 $diferencia = time() - $fecha ;
  12.                 $segundos   = $diferencia ;
  13.                 $minutos    = round($diferencia / 60 );
  14.                 $horas      = round($diferencia / 3600 );
  15.                 $dias       = round($diferencia / 86400 );
  16.                 $semanas    = round($diferencia / 604800 );
  17.                 $mes        = round($diferencia / 2419200 );
  18.                 $anio       = round($diferencia / 29030400 );
  19.  
  20.                 if($segundos <= 60){
  21.                     return $data[$lan]['HSEGUNDOS'];
  22.  
  23.                 }else if($minutos <= 60){
  24.  
  25.                     if($minutos==1){
  26.                         return $data[$lan]['HMINUTO'];
  27.                     }else{
  28.                         return str_replace("%min%",$minutos,$data[$lan]['HMINUTOS']);
  29.                     }
  30.                 }else if($horas <=24){
  31.  
  32.                     if($horas==1){
  33.                         return $data[$lan]['HHORA'];
  34.                     }else{
  35.                         return str_replace("%hor%",$horas,$data[$lan]['HHORAS']);
  36.                     }
  37.                 }else if($dias <= 7){
  38.                     if($dias==1){
  39.  
  40.                         return $data[$lan]['HDIA'];
  41.                     }else{
  42.                         return str_replace("%dia%",$dias,$data[$lan]['HDIAS']);
  43.                     }
  44.                 }else if($semanas <= 4){
  45.                     if($semanas==1){
  46.                         return $data[$lan]['HSEMANA'];
  47.                     }else{
  48.                         return str_replace("%sem%",$semanas,$data[$lan]['HSEMANAS']);
  49.                     }
  50.                 }else if($mes <=12){
  51.                     if($mes==1){
  52.                         return $data[$lan]['HMES'];
  53.                     }else{
  54.                         return str_replace("%mes%",$mes,$data[$lan]['HMESES']);
  55.                     }
  56.                 }else{
  57.                     if($anio==1){
  58.                         return $data[$lan]['HANO'];
  59.                     }else{
  60.                         return str_replace("%ano%",$anio,$data[$lan]['HANOS']);
  61.                     }
  62.                 }
  63.     }//fin function Hace
  64.  
  65. echo Hace("2018-1-15");

MUESTRA
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 22/01/2018, 00:10
 
Fecha de Ingreso: noviembre-2013
Ubicación: Barcelona
Mensajes: 31
Antigüedad: 4 años, 10 meses
Puntos: 0
Respuesta: automatizar formato de fecha

Hola xfxstudios,

Lo voy a probar veo que está muy bien. En mi caso lo arregle a través de una variable que calculas los días.

Posiblemente este me pueda ayudar más.

Muchas gracias,

Etiquetas: datediff, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:16.