Foros del Web » Programando para Internet » PHP »

Si una fecha es mas cercana que otra hacer...

Estas en el tema de Si una fecha es mas cercana que otra hacer... en el foro de PHP en Foros del Web. Como puedo hacer una sentencia para esto... si la fecha actual es mas cercana al proximo 15 de febrero .... { } si la fecha ...
  #1 (permalink)  
Antiguo 09/08/2011, 23:17
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años, 6 meses
Puntos: 1
Si una fecha es mas cercana que otra hacer...

Como puedo hacer una sentencia para esto...

si la fecha actual es mas cercana al proximo 15 de febrero .... { }
si la fecha actual es mas cercana al proximo 15 de agosto .... { }

se que es algo tonto.. pero no se me ocurre como? alguien me puede dar una ayudadita?
  #2 (permalink)  
Antiguo 10/08/2011, 06:22
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 16 años, 2 meses
Puntos: 26
Respuesta: Si una fecha es mas cercana que otra hacer...

Pasa las fechas a tipo timestamp, y después las comparas con los operadores mayor y menor o igual según necesites.
Lee sobre la función strtotime().
  #3 (permalink)  
Antiguo 10/08/2011, 09:28
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Si una fecha es mas cercana que otra hacer...

Llevo esto.. pero no encuentro como hacerle....

Código PHP:
Ver original
  1. <?php
  2. $febrero = strtotime("next february");
  3. $agosto= strtotime("next august");
  4. $now = strtotime("now");
  5. if ($febrero > $agosto) { echo "Febrero"; } else { echo "Agosto"; }
  6. ?>

Alguien me puede dar una ayudita
  #4 (permalink)  
Antiguo 10/08/2011, 09:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Si una fecha es mas cercana que otra hacer...

Usa date/time, algo como
Código PHP:
Ver original
  1. <?php
  2. class CloseDate extends DateTime
  3. {
  4.     public function isClose( $dateToCheck, $date = null )
  5.     {
  6.         $dateToCheck = new DateTime($dateToCheck, $this->getTimezone());
  7.         $date = is_string($date)
  8.             ? new DateTime($date, $this->getTimezone())
  9.             : $this;
  10.         $interval = $date->diff($dateToCheck);
  11.  
  12.         return ($interval->format('%R') == '+');
  13.     }
  14. }
  15.  
  16. $obj = new CloseDate('2011-05-16 00:30:01', new DateTimeZone('America/Puerto_Rico'));
  17.  
  18. $date = '2011-02-15';
  19. if($obj->isClose($date)){
  20.     echo 'Esta cercana a ' . $date . '<br />';
  21. }
  22.  
  23. $date = '2011-08-15';
  24. if($obj->isClose($date)){
  25.     echo 'Esta cercana a ' . $date . '<br />';
  26. }
  27.  
  28. $dates = array('2011-02-15', '2011-08-15');
  29. foreach($dates as $date){
  30.     if($obj->isClose($date, '2011-01-01')){
  31.         echo 'Esta cercana a ' . $date . '<br />';
  32.         break;
  33.     }
  34. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 10/08/2011 a las 10:10
  #5 (permalink)  
Antiguo 10/08/2011, 11:09
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 16 años, 2 meses
Puntos: 26
Respuesta: Si una fecha es mas cercana que otra hacer...

La idea es que al strtotime() le pases una fecha como parámetro, así la función te devuelve su timestamp (la fecha en segundos desde el 01/01/1970). Así tendrás las fechas representadas como números enteros y te será más fácil compararlas.
Saludos.
  #6 (permalink)  
Antiguo 10/08/2011, 11:32
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Si una fecha es mas cercana que otra hacer...

Cita:
Iniciado por ramiro_md Ver Mensaje
La idea es que al strtotime() le pases una fecha como parámetro, así la función te devuelve su timestamp (la fecha en segundos desde el 01/01/1970). Así tendrás las fechas representadas como números enteros y te será más fácil compararlas.
Saludos.
No me puedes dar una ayudadita con ejemplo de codigo?

Te lo agradezco
  #7 (permalink)  
Antiguo 10/08/2011, 11:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Si una fecha es mas cercana que otra hacer...

Ya te dejo un ejemplo abimaelrc, ¿lo haz intentado?
  #8 (permalink)  
Antiguo 10/08/2011, 11:41
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Si una fecha es mas cercana que otra hacer...

Con el ejemplo....

Fatal error: Call to undefined method CloseDate::diff() in /home2/afam1605/public_html/expo/index.php on line 10
  #9 (permalink)  
Antiguo 10/08/2011, 11:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Si una fecha es mas cercana que otra hacer...

¿Que versión de PHP tienes?
  #10 (permalink)  
Antiguo 10/08/2011, 12:15
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Si una fecha es mas cercana que otra hacer...

es la version 5.2.17
  #11 (permalink)  
Antiguo 10/08/2011, 12:23
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Si una fecha es mas cercana que otra hacer...

Lo hize de esta forma....

por ahora me funciona.. no estoy seguro ke haga la funcion cuando pase el 15 de agosto

Código PHP:
Ver original
  1. $febre = "15 february".date('Y');
  2. $agos = "15 august".date('Y');
  3. $febrero=  strtotime($febre);
  4. $agosto=  strtotime($agos);
  5.  
  6.  
  7. if ($febrero > $agosto) { echo "febrero"; } else { echo "agosto"; }
  #12 (permalink)  
Antiguo 10/08/2011, 17:46
Avatar de ramiro_md  
Fecha de Ingreso: septiembre-2008
Mensajes: 274
Antigüedad: 16 años, 2 meses
Puntos: 26
Respuesta: Si una fecha es mas cercana que otra hacer...

Cita:
Iniciado por elcapitolio Ver Mensaje
Lo hize de esta forma....

por ahora me funciona.. no estoy seguro ke haga la funcion cuando pase el 15 de agosto

Código PHP:
Ver original
  1. $febre = "15 february".date('Y');
  2. $agos = "15 august".date('Y');
  3. $febrero=  strtotime($febre);
  4. $agosto=  strtotime($agos);
  5.  
  6.  
  7. if ($febrero > $agosto) { echo "febrero"; } else { echo "agosto"; }
Ese iba a ser mi ejemplo jeje.
Me alegro que lo hayas resuelto.
Saludos.
EDIT: aunque si queres una manera más fiel de hacerlo, deja de la función date() genere la fecha.
Abajo te dejo el articulo del manual sobre dicha función.
http://php.net/manual/es/function.date.php
  #13 (permalink)  
Antiguo 10/08/2011, 22:37
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Si una fecha es mas cercana que otra hacer...

Gracias por la ayuda!!!

este ultimo EDIT que hiciste ya no lo entendi... a que te refieres?

:D gracias de nuevo

Etiquetas: fecha
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 22:10.