Foros del Web » Programando para Internet » PHP »

Calculo de ultimo dia

Estas en el tema de Calculo de ultimo dia en el foro de PHP en Foros del Web. Cordial saludo. En un combo manualmente le coloco los meses del año: enero,febrero...... y debo calcular el numero de dias de ese mes, necesito esto ...
  #1 (permalink)  
Antiguo 20/06/2005, 15:10
 
Fecha de Ingreso: febrero-2005
Mensajes: 650
Antigüedad: 12 años, 9 meses
Puntos: 2
Calculo de ultimo dia

Cordial saludo.
En un combo manualmente le coloco los meses del año: enero,febrero......
y debo calcular el numero de dias de ese mes, necesito esto para poner fecha inicial: mes/diainicial/año y fechafinal mes/diafinal/año; tengo este codigo pero no me sale.

$VL_Ano = date("Y");
if(strlen($_REQUEST['cbMes'])==1)
{
$VL_Mes = '0' . $_REQUEST['cbMes'];
}
elseif(strlen($_REQUEST['cbMes'])==2)
{
$VL_Mes = $_REQUEST['cbMes'];
}
$FechaIni = $VL_Mes . '/01/' . $VL_Ano;
$VL_UltDia = mktime(0,0,0,$VL_Mes+1,0,$VL_Ano);
$FechaFin = $VL_Mes."/".$VL_UltDia."/".$VL_Ano;

Agradezco la ayuda que me puedan brindar.
  #2 (permalink)  
Antiguo 25/06/2005, 05:01
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 14 años, 5 meses
Puntos: 1
El código que publicas está muy cerca de lo que buscas, y en realidad es bien interesante :). La llamada a mktime() es bastante acertada, pero el valor que devuelve es una marca de tiempo Unix, cosa que no sirve para tu resultado.

Una forma de llegar a lo que quieres, es entregar el valor que devuelve mktime() a la función date(), de modo que ésta produzca el valor de día a partir de la marca de tiempo.

Por ejemplo:

Código PHP:
$VL_Ano date ('Y');

$VL_Mes $_REQUEST['cbMes'];
if (
strlen ($VL_Mes) == 1) {
    
$VL_Mes '0' $VL_Mes;
}

$FechaIni $VL_Mes '/01/' $VL_Ano;

// Esta es la sentencia relevante
$VL_UltDia date ('d'mktime (000$VL_Mes 10$VL_Ano));

$FechaFin $VL_Mes '/' $VL_UltDia '/' $VL_Ano
  #3 (permalink)  
Antiguo 25/06/2005, 10:40
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 13 años, 9 meses
Puntos: 0
no entiendo nada :p
  #4 (permalink)  
Antiguo 26/06/2005, 05:23
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Código PHP:
 $VL_Ano date ('Y'); // Con esto guarda el año actual 

$VL_Mes $_REQUEST['cbMes']; // Aquí recoje el valor del listbox
// Dicho valor ha de venir con un solo carácter del 1 al 9
if (strlen ($VL_Mes) == 1) { // Porque si tiene solo un carácter
    
$VL_Mes '0' $VL_Mes//  le asigna un 0 antes quedando del 01 al 09
}
// Arma una fecha que corresponde al primcipio de mes... día 01, no hay más
$FechaIni $VL_Mes '/01/' $VL_Ano// Formato MM/DD/YYYY

// Esta es la sentencia relevante
// Toma el TIMESTAMP del día 0 del "mes siguiente".
// mktime lo entiende como el último día del "mes anterior" (mes actual pués!)
$VL_UltDia date ('d'mktime (000$VL_Mes 10$VL_Ano));
// Con date() obtubo solo el día... que significa el número de días del mes
// Y con ese dato solo arma la fecha correxpondiente a fin de mes
$FechaFin $VL_Mes '/' $VL_UltDia '/' $VL_Ano;

//---***--- EDITO:
/* Los dos últimos "pasos" se pudiesen dar solo en uno
$FechaFin= date('m/d/Y',  mktime (0, 0, 0, $VL_Mes + 1, 0, $VL_Ano));
así damos irectamente formato a la fecha... mejor ¿no? :-D */ 
No olvides... www.php.net . Yo soy malo explicando

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 26/06/2005 a las 05:42
  #5 (permalink)  
Antiguo 26/06/2005, 11:03
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 13 años, 9 meses
Puntos: 0
redio, que complicado se me va a hacer defender en php :(

Pero.. no terminado de entender pq

$VL_Mes = $_REQUEST['cbMes']; // Aquí recoje el valor del listbox
// Dicho valor ha de venir con un solo carácter del 1 al 9

1 al 9 solo? y los otros 3 meses?
  #6 (permalink)  
Antiguo 26/06/2005, 11:04
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 13 años, 9 meses
Puntos: 0
ah coño!
no he dicho nada.. ya :p
vamos que si tiene 1 caracter le pone un 0 por delante, si no lo deja como estaba
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 21:19.