Foros del Web » Programando para Internet » PHP »

Detectar numero de dia anterior a hoy

Estas en el tema de Detectar numero de dia anterior a hoy en el foro de PHP en Foros del Web. Buen dia, alguien podria ayudarme para saber como deberia ser una funcion para obtener el numero de dia, del viernes anterior al dia de hoy ...
  #1 (permalink)  
Antiguo 19/04/2010, 10:25
 
Fecha de Ingreso: marzo-2008
Mensajes: 59
Antigüedad: 16 años, 8 meses
Puntos: 0
Detectar numero de dia anterior a hoy

Buen dia, alguien podria ayudarme para saber como deberia ser una funcion para obtener el numero de dia, del viernes anterior al dia de hoy date("Y-m-d")


Ejemplo, hoy lunes capturo algo, pero lo quiero registrar con la fecha del viernes 16, pero el dia podria ser cualquiera. Si fuera lunes siempre la captura, pues restaria 3 dias nada mas, pero puede ser cualquier dia.


Gracias de antemano.
  #2 (permalink)  
Antiguo 19/04/2010, 10:43
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, 6 meses
Puntos: 1517
Respuesta: Detectar numero de dia anterior a hoy

Puedes usar strtotime junto con date
Código PHP:
Ver original
  1. <?php
  2. echo date('Y-m-d',strtotime('-3 day'));
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 19/04/2010, 11:02
 
Fecha de Ingreso: marzo-2008
Mensajes: 59
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Detectar numero de dia anterior a hoy

Gracias por contestar, efectivamente si siempre capturara el lunes, esa seria la funcion a utilizar con el strtotime, pero como comentaba en el anterior mensaje podria ser otro dia osea que es variable

Ejemplos, si capturo el martes ya seria,

date("Y-m-d", strtotime ('- 4 days'));

si fuera el miercoles

date("Y-m-d", strtotime ('- 5 days'));
  #4 (permalink)  
Antiguo 19/04/2010, 11:06
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, 6 meses
Puntos: 1517
Respuesta: Detectar numero de dia anterior a hoy

Pues en ese caso recorrelo en un ciclo, y vas verificando con una condición si el día que está en el ciclo es viernes, usando date('N') vas a saber si es viernes (sería el día 5) o no. Luego muestras en pantalla.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 23/04/2010, 07:44
 
Fecha de Ingreso: marzo-2008
Mensajes: 59
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Detectar numero de dia anterior a hoy

Buen dia gracias por responder, lo que hice tal vez no sea lo optimo pero me funciono correctamente.

function dia_captura(){

//Se calcula la fecha del la semana anterior
$semana_pasada=date("Y-m-d",strtotime("-1 week"));

switch (date('w',strtotime($semana_pasada))){

case '1': $dia_captura=date(date("Y-m-d",strtotime("-1 week +4 day")));
break;
case '2': $dia_captura=date(date("Y-m-d",strtotime("-1 week +3 day")));
break;
case '3': $dia_captura=date(date("Y-m-d",strtotime("-1 week +2 day")));
break;
case '4': $dia_captura=date(date("Y-m-d",strtotime("-1 week +1 day")));
break;
case '5': $dia_captura=date(date("Y-m-d",strtotime("-1 week")));
break;
case '6': $dia_captura=date(date("Y-m-d",strtotime("-1 week -1 day")));
break;
case '0': $dia_captura=date(date("Y-m-d",strtotime("-1 week -2 day")));
break;

}
return $dia_captura;
}
  #6 (permalink)  
Antiguo 23/04/2010, 09:03
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, 6 meses
Puntos: 1517
Respuesta: Detectar numero de dia anterior a hoy

Mira este ejemplo dentro de un ciclo
Código PHP:
Ver original
  1. <?php
  2. function getFriday(){
  3.     for($i=7;$i>=1;$i--){
  4.         if(date('N', strtotime('-' . $i . 'day')) == 5){
  5.             $viernesPasado = date('Y-m-d', strtotime('-' . $i . 'day'));
  6.             return $viernesPasado;
  7.         }
  8.     }
  9. }
  10. echo getFriday();
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 23/04/2010, 10:26
 
Fecha de Ingreso: marzo-2010
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Detectar numero de dia anterior a hoy

Aqui te dejo otra forma de hacerlo, pruebala.

Código PHP:
Ver original
  1. <?php
  2. function ultimoDia($mes,$ano){
  3.     $ultimo_dia=28;
  4.     while (checkdate($mes,$ultimo_dia + 1,$ano)){
  5.        $ultimo_dia++;
  6.     }
  7.     return $ultimo_dia;
  8. }
  9.  
  10. /**
  11.  * @return array
  12. */
  13. function lastFriday()
  14. {
  15.     $day = date('d');
  16.     $month = date('m');
  17.     $year = date('Y');
  18.     $found = false;
  19.  
  20.     while(!$found){
  21.         $day--;
  22.        
  23.         // Si el dia es igual a cero pasa al mes anterior
  24.         // day pasa a ser el ultimo dia del mes anterior
  25.         if($day==0){
  26.             $month--;
  27.             $day = ultimoDia($month, $year);
  28.         }
  29.        
  30.         // Si el mes es igual a cero pasa al año anterior
  31.         // y el mes pasa a ser el mes 12
  32.         if($month==0){
  33.            $year--;
  34.             $month = 12;
  35.         }
  36.        
  37.         $day_name = date('D', mktime(0,0,0, $month, $day, $year));
  38.         // encuentra el dia y lo devuelve
  39.         if($day_name == 'Fri'){
  40.             $found = true;
  41.             return array('day'      =>$day,
  42.                          'month'    => $month,
  43.                          'year'     => $year);
  44.         }
  45.     }
  46. }
  47.  
  48. $date = lastFriday();
  49. echo $date['year'].'-'.$date['month'].'-'.$date['day'];
  50. ?>

Etiquetas: detectar, dia, numero, anteriores
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 12:28.