determinar el número de meses entre dos fechas determinadas

  • tiffix
  • Student
  • Student
  • Avatar de Usuario
  • Registrado: Jun 03, 2009
  • Mensajes: 65
  • Loc: kenya
  • Status: Offline

Nota Diciembre 22nd, 2009, 7:30 am

hola,
Necesito ayuda con un script que puede determinar el número de meses entre dos fechas dadas. por ejemplo Mayo/2009 y Aug/2009. El guión es la Salida 4.
:?
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Diciembre 22nd, 2009, 7:30 am

  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de Usuario
  • Registrado: Jul 25, 2005
  • Mensajes: 2735
  • Loc: Nashville, TN
  • Status: Offline

Nota Diciembre 22nd, 2009, 9:08 am

Código: [ Select ]
<?php

  $start = mktime(0,0,0, 5, 1, 2009);
  $stop = mktime(0,0,0, 8, 1, 2009);
 
  $span = ((idate('Y', $stop) * 12) + idate('m', $stop)) - ((idate('Y', $start) * 12) + idate('m', $start)) + 1;
  echo $span;
?>
  1. <?php
  2.   $start = mktime(0,0,0, 5, 1, 2009);
  3.   $stop = mktime(0,0,0, 8, 1, 2009);
  4.  
  5.   $span = ((idate('Y', $stop) * 12) + idate('m', $stop)) - ((idate('Y', $start) * 12) + idate('m', $start)) + 1;
  6.   echo $span;
  7. ?>


Fuente: http://php.net/strtotime a través de búsqueda de Google.
I'd love to change the world, but they won't give me the source code.
  • tiffix
  • Student
  • Student
  • Avatar de Usuario
  • Registrado: Jun 03, 2009
  • Mensajes: 65
  • Loc: kenya
  • Status: Offline

Nota Diciembre 22nd, 2009, 9:26 am

Código: [ Select ]
$sdate="Jan 22, 2009";
   $edate="Feb 28, 2009";
        
   $s=strtotime($sdate);
   $e=strtotime($edate);
   echo round(($a=(($e-$s)/86400)/30),0);
  1. $sdate="Jan 22, 2009";
  2.    $edate="Feb 28, 2009";
  3.         
  4.    $s=strtotime($sdate);
  5.    $e=strtotime($edate);
  6.    echo round(($a=(($e-$s)/86400)/30),0);

amabilidad de hacerme saber cuál es incorrecto con esto. gracias de todos modos el código de grandes obras.
  • yokoshimax
  • Born
  • Born
  • No Avatar
  • Registrado: Feb 23, 2012
  • Mensajes: 1
  • Status: Offline

Nota Febrero 23rd, 2012, 8:45 am

tiffix escribió:
Código: [ Select ]
$sdate="Jan 22, 2009";
   $edate="Feb 28, 2009";
        
   $s=strtotime($sdate);
   $e=strtotime($edate);
   echo round(($a=(($e-$s)/86400)/30),0);
  1. $sdate="Jan 22, 2009";
  2.    $edate="Feb 28, 2009";
  3.         
  4.    $s=strtotime($sdate);
  5.    $e=strtotime($edate);
  6.    echo round(($a=(($e-$s)/86400)/30),0);

amablemente me deja saber cuál es malo en esto. Gracias de todos modos para el código funciona muy bien.




Sólo registro, que el código me sirvieron, pero para ser más exactos y comparar las fechas como

$sdate = 2012-02-22 15:53:49;
$edate = 2012-03-21 15:53:49;

con 1 día faltan 1 mes es mejor al piso de la dirección como "truncado"

que lo haría como resultado 0 meses que es correcto

Publicar Información

  • Total de mensajes en este tema: 4 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 82 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC