Ir al contenido


Foto

¿Cómo presento por meses y años en PHP?


  • Por favor identifícate para responder
8 respuestas en este tema

#1 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 12 marzo 2009 - 04:11

Hola amigos, aprovecho éste hilo para otra consulta relacionado con este mismo código, partiendo del código anterior, ¿cómo hago para que me presente por meses y años?, o sea, ahora mismo me lo presenta en dias ( 15 dí­as ), pero quisiera que me presentara de esta forma : 1 Mes y 15 Dí­as ó 1 Año 3 Meses y 15 Dí­as y así­ sucesivamente, ¿es posible eso?

Fleon xD
  • 0

#2 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 13 marzo 2009 - 07:55

Hola amigos, aprovecho éste hilo para otra consulta relacionado con este mismo código, partiendo del código anterior, ¿cómo hago para que me presente por meses y años?, o sea, ahora mismo me lo presenta en dias ( 15 dí­as ), pero quisiera que me presentara de esta forma : 1 Mes y 15 Dí­as ó 1 Año 3 Meses y 15 Dí­as y así­ sucesivamente, ¿es posible eso?

Fleon xD


Saludos.

Compañero Fleon, una recomendación, creo que es mejor abrir otro hilo sobre el tema para no ligar dos conceptos un tanto diferente aunque a la vez vayan en la misma lí­nea, así­ para búsquedas de temas es mucho más fácil conseguir.

Sabes que puedes hacer un enlace (link) de otro tema dentro un tema nuevo.

No te respondo sobre la pregunta porque no sé PHP, sino con mucho gusto.
  • 0

#3 Fleon

Fleon

    Advanced Member

  • Miembros
  • PipPipPip
  • 172 mensajes
  • LocationRepública Dominicana

Escrito 13 marzo 2009 - 08:05

Gracias Rolphy Reyes por el consejo en lo adelante trataré de hacerlo (y).

Fleon xD
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 13 marzo 2009 - 11:29

Hola

Me he tomado la libertad de dividir el tema y editando el primer post para que haga referencia al hilo anterior. :)

Salud OS
  • 0

#5 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 22 mayo 2009 - 01:57

Espero que no sea muy tarde, pero tengo esta función que hace lo que quieres:



php
  1. function haceCuanto($fecha, $fecha_final){
  2.     $fecha = strtotime($fecha);
  3.     $fecha_final = strtotime($fecha_final);
  4.     $tiempo = $fecha_final-$fecha;
  5.     if(round($tiempo / 31536000) <= 0){
  6.         if(round($tiempo / 2678400) <= 0){
  7.             if(round($tiempo / 86400) <= 0){
  8.                 if(round($tiempo / 3600) <= 0){
  9.                     if(round($tiempo / 60) <= 0){
  10.                 if($tiempo <= 60){ $hace = "Hace " .$tiempo. " segundos.."; }
  11.                 } else 
  12.                 {
  13.                     $can = round($tiempo / 60);
  14.                     $hace = "Hace " .$can. " minutos.."; 
  15.                 }
  16.                 } else 
  17.                 {
  18.                     $can = round($tiempo / 3600);
  19.                     if($can <= 1) {    $word = "hora.."; } else {    $word = "horas.."; }
  20.                     $hace = "Hace aproximadamente " .$can. " ".$word;
  21.                 }
  22.                 } else 
  23.                 {
  24.                     $can = round($tiempo / 86400);
  25.                     $hace = "Hace aproximadamente " .$can. " dí­as..";
  26.                 }
  27.                 } else 
  28.                 {
  29.                     $can = round($tiempo / 2678400); 
  30.                     if($can <= 1) {    $word = "mes.."; } else { $word = "meses.."; }
  31.                     $hace = "Hace aproximadamente " .$can. " ".$word;
  32.                 }
  33.                 } else 
  34.                 {
  35.                     $can = round($tiempo / 31536000);
  36.                     if($can <= 1) {    $word = "año..";} else { $word = "años.."; }
  37.                     $hace = "Hace aproximadamente " .$can. " ".$word;
  38.                 }
  39.     // Mensaje
  40.     return $hace;
  41. }



Su modo de uso serí­a así­:



php
  1. $fecha1 = "2008-10-31";
  2. $fecha2 = date("Y-m-d");
  3. $mensaje = haceCuanto($fecha1, $fecha2);
  4.  
  5. Echo $mensaje;



El resultado serí­a

Hace aproximadamente 1 año..


Saludos.
  • 0

#6 Kipow

Kipow

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 228 mensajes
  • LocationGuatemala

Escrito 22 mayo 2009 - 11:17

Bonita funcion, va para mi biblioteca recien empezada de php. gracias.
  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 23 mayo 2009 - 09:23

Bonita funcion, va para mi biblioteca recien empezada de php. gracias.


Hola, aquí­ tengo otro que es más preciso:



php
  1. // Configuramos la fecha base aquí­
  2. $base_day = 31; // no es compatible "0"
  3. $base_mon = 10; // no es compatible "0"
  4. $base_yr = 2008; // Usemos años de 4 dí­gitos!
  5.  
  6. // Obtenemos la fecha actual
  7. $current_day = date ("j");
  8. $current_mon = date ("n");
  9. $current_yr = date ("Y");
  10.  
  11. // Y ahora calculamos la diferencia!
  12.  
  13. // el overflow siempre es causado por los dí­as máximos de $base_mon
  14. // entonces necesitamos saber cuantos dí­as tiene $base_mon
  15. $base_mon_max = date ("t",mktime (0,0,0,$base_mon,$base_day,$base_yr));
  16.  
  17. // Dí­as que quedan hasta el final del mes
  18. $base_day_diff = $base_mon_max - $base_day;
  19.  
  20. // meses que quedan hasta el final del año
  21. $base_mon_diff = 12 - $base_mon - 1;
  22.  
  23. // empecemos con el 1ro de Enero del próximo año
  24. $start_day = 1;
  25. $start_mon = 1;
  26. $start_yr = $base_yr + 1;
  27.  
  28. // Diferencia a partir del primer dí­a del año (01/01/xxxx)
  29. $day_diff = ($current_day - $start_day) + 1; // Hoy
  30. $mon_diff = ($current_mon - $start_mon) + 1; // Mes actual
  31. $yr_diff = ($current_yr - $start_yr);
  32.  
  33. // y agregamos el resto de $base_yr
  34. $day_diff = $day_diff + $base_day_diff;
  35. $mon_diff = $mon_diff + $base_mon_diff;
  36.  
  37. // manejamos el exceso de dí­as
  38. if ($day_diff >= $base_mon_max)
  39. {
  40. $day_diff = $day_diff - $base_mon_max;
  41. $mon_diff = $mon_diff + 1;
  42. }
  43.  
  44. // manejamos el exceso de años
  45. if ($mon_diff >= 12)
  46. {
  47. $mon_diff = $mon_diff - 12;
  48. $yr_diff = $yr_diff + 1;
  49. }
  50.  
  51. // los resultados aquí­:
  52.  
  53. // $yr_diff --> El año entre dos fechas
  54. // $mon_diff --> El mes entre dos fechas
  55. // $day_diff --> Los dí­as entre dos fechas
  56.  
  57. // ****************************************************************************
  58.  
  59. // Aquí­ filtramos si es en plural o singular
  60. $years = "a&ntilde;os";
  61. $days = "d&iacute;as";
  62. $months = "meses";
  63. if ($yr_diff == "1") $years = "a&ntilde;o";
  64. if ($day_diff == "1") $days = "d&iacute;a";
  65. if ($mon_diff == "1") $months = "mes";
  66.  
  67. // Imprimos el tiempo transcurrido
  68. if ($yr_diff == "0") {
  69. echo '
  70. <td width="90%" class="titlebg2">Tenemos <b>', $mon_diff ,' ', $months, ' y ', $day_diff, ' ' ,$days, '</b> en l&iacute;nea.
  71.  
  72. </td>';
  73. } else {
  74. echo '
  75. <td width="90%" class="titlebg2">Tenemos <b>', $yr_diff ,' ', $years, ', ', $mon_diff, ' ', $months, ' y ', $day_diff, ' ' ,$days, '</b> en l&iacute;nea.
  76.  
  77. </td>';
  78. }



El resultado es el mismo que usamos aquí­ en el foro:

Tenemos 6 meses y 23 dí­as en lí­nea.



Saludos.
  • 0

#8 cesar_cz

cesar_cz

    Advanced Member

  • Moderadores
  • PipPipPip
  • 919 mensajes
  • LocationChile

Escrito 07 diciembre 2009 - 08:58

Hola amigo, yo hice una función para mi sitio www.cesarcancino.com t la expongo acá , ojalá t sirva, saludos...



php
  1. function fecha(){
  2. $dia=date("w");
  3. $day=date("d");
  4. $mes=date("m");
  5. switch ($dia) {
  6. case 0:
  7.   $dia ="Domingo";
  8. break;
  9.  
  10.   case 1:
  11.   $dia = "Lunes";
  12. break;
  13. case 2:
  14.   $dia ="Martes";
  15.  
  16.           break;
  17.  
  18.   case 3:
  19.   $dia ="Miércoles";
  20.  
  21.           break;
  22.   case 4:
  23.   $dia ="Jueves";
  24.     break;
  25.   case 5:
  26.   $dia ="Viernes";
  27. break;
  28.   case 6:
  29.   $dia ="Sábado";
  30. break;
  31.  
  32. }
  33. switch ($mes){
  34. case &#39;01&#39;:
  35. $mes="Enero";
  36. break;
  37. case &#39;02&#39;:
  38. $mes="Febrero";
  39. break;
  40. case &#39;03&#39;:
  41. $mes="Marzo";
  42. break;
  43. case &#39;04&#39;:
  44. $mes="Abril";
  45. break;
  46. case &#39;05&#39;:
  47. $mes="Mayo";
  48. break;
  49. case &#39;06&#39;:
  50. $mes="Junio";
  51. break;
  52. case &#39;07&#39;:
  53. $mes="Julio";
  54. break;
  55. case &#39;08&#39;:
  56. $mes="Agosto";
  57. break;
  58. case &#39;09&#39;:
  59. $mes="Septiembre";
  60. break;
  61. case &#39;10&#39;:
  62. $mes="Octubre";
  63. break;
  64. case &#39;11&#39;:
  65. $mes="Noviembre";
  66. break;
  67. case &#39;12&#39;:
  68. $mes="Diciembre";
  69. break;
  70. }
  71. $fecha="$dia ".$day." de ".$mes." de ".date("Y");
  72. return $fecha;
  73. }



Saludos desde Chile...
  • 0

#9 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 07 diciembre 2009 - 09:22

Muy buen aporte amigo (y)
  • 0




IP.Board spam blocked by CleanTalk.