Foros del Web » Programando para Internet » PHP »

problema con suma de fechas usando strtotime

Estas en el tema de problema con suma de fechas usando strtotime en el foro de PHP en Foros del Web. Buenas a todos, mis conococimientos de php son basicos, pero siguiendo tutoriales, guias y foros voy consiguiendo lo que necesito. A veces me estanco como ...
  #1 (permalink)  
Antiguo 13/01/2012, 15:30
 
Fecha de Ingreso: enero-2007
Mensajes: 4
Antigüedad: 17 años, 3 meses
Puntos: 0
problema con suma de fechas usando strtotime

Buenas a todos, mis conococimientos de php son basicos, pero siguiendo tutoriales, guias y foros voy consiguiendo lo que necesito. A veces me estanco como ahora y necesito un ojo de mas para ver lo ke yo no veo. Llevo todo el dia y no avanzo.
Estoy haciendo una especie de agenda, cada dia puedo ponerle un importe para luego comparar importes. Entro en la web y me ha de mostrar los 7 dias de la semana en la que estoy, luego necesito averiguar que id tiene el lunes para luego saber los demas id de la semana, el id ke uso es la fecha sin simbolos (010212 = 1 de febrero del 2012)

Lo que hago es esto:

<?php
$idhoy= date("dmy");

// funcion para restar fechas segun dia de la semana y averiguar la id del lunes

function calcularfecha($dias){
$calculo = strtotime("$dias days");
return date("dmy", $calculo);
}

if ( $diasemana == "0" ) {
echo calcularfecha(-6);
} elseif ( $diasemana == "6" ) {
$idlunes= calcularfecha(-5);
} elseif ( $diasemana == "5" ) {
$idlunes= calcularfecha(-4);
} elseif ( $diasemana == "4" ) {
$idlunes= calcularfecha(-3);
} elseif ( $diasemana == "3" ) {
$idlunes= calcularfecha(-2);
} elseif ( date("w") == "2" ) {;
$idlunes= calcularfecha(-1);
}else{
$idlunes= date("dmy");
}

Bien, hasta aki, si hago un echo $idlunes me sale el id perfecto a dia de lunes, no se si se me entiende, si estamos a jueves dia 12 de enero del 1012, la id ke me sale es 090112 que corresponde al lunes. Bien, ahora lo que kiero es averiguar las id de toda la semana para luego añadirla a los campos ke enviare al mysql, pero no se pq, no me lo suma al lunes, si no ke me lo suma al dia en el que estamos hoy. El codigo que pongo es este:


$idmartes=date("dmy", strtotime("$idlunes +1 days"));
$idmiercoles= date("dmy", strtotime("$idlunes + 2 days"));
$idjueves= date("dmy", strtotime("$idlunes + 3 days"));
$idviernes= date("dmy", strtotime("$idlunes + 4 days"));
$idsabado= date("dmy", strtotime("$idlunes + 5 days"));
$iddomingo= date("dmy", strtotime("$idlunes + 6 days"));

Si volvemos al ejemplo que he puesto, el resultado es:

130112
140112
150112
....

y tendria que ser:

100112
110112
...

Seguro que es una tonteria, pero es ke no lo veo.

Gracias por adelantado.

Un saludo
  #2 (permalink)  
Antiguo 13/01/2012, 16:12
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: problema con suma de fechas usando strtotime

No entendí del todo lo que intentas hacer con todo ese código, pero así consigues un array con los "códigos" del lunes pasado al domingo:

Código PHP:
Ver original
  1. <?php
  2. for ($i=0; $i<7; $i++) {
  3.     $data[] = date('dmy', strtotime("last monday + $i days"));
  4. }
  5.  
  6. echo '<pre>';
  7. print_r($data);
  8. echo '</pre>';

En caso de que fuera 9 de enero (lunes) mostraría del 2 al 8 de enero.

Tu código falla porque le estás pasando mal la fecha.

http://php.net/manual/es/function.strtotime.php

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 14/01/2012, 08:53
 
Fecha de Ingreso: enero-2007
Mensajes: 4
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: problema con suma de fechas usando strtotime

Muchisimas gracias Andres. Me ha servido de mucha ayuda.

He tenido que retocar el codigo para controlar el lunes, pues no quiero que se vaya a otra semana de la que no estemos ahora, no se si me explico.
El codigo queda de la siguiente manera, no he probado el lunes pq la fecha del servidor no la puedo modificar. Creo que podria cambiar en el condicional del lunes:

$data[] = date("dmy", strtotime("$idlunes + $i days"));
por esto otro
$data[] = date("dmy", strtotime("tuesday + $i days"));
que creo que lo que hace es pasar al dia siguiente



<?php
$diasemana=date("w");

if ( $diasemana == "1" ) {
$idlunes= date("dmy");
for ($i=0; $i<7; $i++)
{ $data[] = date("dmy", strtotime("$idlunes + $i days")); }
} else {
for ($i=0; $i<7; $i++)
{ $data[] = date("dmy", strtotime("last monday + $i days")); }
$idlunes=$data[0];
}

$idmartes=$data[1];
$idmiercoles=$data[2];
$idjueves=$data[3];
$idviernes=$data[4];
$idsabado=$data[5];
$iddomingo=$data[6];
?>

Etiquetas: mysql, strtotime, suma
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 15:10.