Foros del Web » Programando para Internet » PHP »

fechas en php

Estas en el tema de fechas en php en el foro de PHP en Foros del Web. hola tengo un ingreso que hago con php y le doy la fecha now() para que guarde la fecha en que se ingreso el registro ...
  #1 (permalink)  
Antiguo 29/09/2015, 07:38
 
Fecha de Ingreso: noviembre-2012
Mensajes: 139
Antigüedad: 11 años, 4 meses
Puntos: 1
fechas en php

hola tengo un ingreso que hago con php y le doy la fecha now() para que guarde la fecha en que se ingreso el registro pero tengo una duda.

necesito contar que esa fecha que se ingreso se muestre en 15 dias mas sin contar los dias feriados ni los domingos facil hacer un
Código PHP:
$fecha date('Y-m-d');
$nuevafecha strtotime '+15 day' strtotime $fecha ) ) ;
$nuevafecha date 'Y-m-d' $nuevafecha ); 
pero me cuenta todos los dias y solo necesito que si ingreso el dia 1-07-2015 me muestre los datos el dia 19-07-2015 y no el 15-07-2015
si alguien sabe como hacer eso ayuda por favor (contar solo los dias habiles) de lunes a sabados
  #2 (permalink)  
Antiguo 29/09/2015, 08:11
 
Fecha de Ingreso: junio-2015
Mensajes: 2
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: fechas en php

Puedes crear una lista de exclusion, en la cual guarde las fechas que no deseas que tome en cuenta tu aplicacion, eso para los feriados y en relacion a el dia domingo puedes pedir mediante el formato de la fecha, que te de tambien el dia exacto. De esa forma creas un IF que te permita excluir el dia domingo.

un ejemplo para los dias domingo:

date('Y-m-d l'); --> retorna 1990-01-01 Saturday

Claro con esto tendrias que modificar un poco tu funcion y sumarlos de uno en uno para poder realizar una comparacion. No se si me explique bien, cualquier cosa preguntas, espero poder ayudar!
  #3 (permalink)  
Antiguo 29/09/2015, 18:32
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: fechas en php

prueba asi:
Código PHP:
Ver original
  1. $fecha1 = strtotime('2015-09-01');
  2. $fecha2 = strtotime('2015-09-29');
  3. for($fecha1;$fecha1<=$fecha2;$fecha1=strtotime('+1 day ' . date('Y-m-d',$fecha1))){
  4.     if((strcmp(date('D',$fecha1),'Sun')!=0) and (strcmp(date('D',$fecha1),'Sat')!=0)){
  5.         echo date('Y-m-d D',$fecha1) . '<br />';
  6.     }
  7. }
para tu caso serial ago mas o menos asi:
Código PHP:
Ver original
  1. $fecha1 = strtotime('2015-07-01');
  2. $fecha2 = strtotime('+15 day', $fecha1);
  3. for($fecha1;$fecha1<=$fecha2;$fecha1=strtotime('+10 day ' . date('Y-m-d',$fecha1))){
  4.     if((strcmp(date('D',$fecha1),'Sun')!=0) and (strcmp(date('D',$fecha1),'Sat')!=0)){
  5.     }
  6. }echo date('Y-m-d D',$fecha1) . '<br />';
__________________
[email protected]
HITCEL

Última edición por xfxstudios; 29/09/2015 a las 18:54
  #4 (permalink)  
Antiguo 30/09/2015, 07:07
 
Fecha de Ingreso: noviembre-2012
Mensajes: 139
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: fechas en php

Cita:
Iniciado por xfxstudios Ver Mensaje
prueba asi:
Código PHP:
Ver original
  1. $fecha1 = strtotime('2015-09-01');
  2. $fecha2 = strtotime('2015-09-29');
  3. for($fecha1;$fecha1<=$fecha2;$fecha1=strtotime('+1 day ' . date('Y-m-d',$fecha1))){
  4.     if((strcmp(date('D',$fecha1),'Sun')!=0) and (strcmp(date('D',$fecha1),'Sat')!=0)){
  5.         echo date('Y-m-d D',$fecha1) . '<br />';
  6.     }
  7. }
para tu caso serial ago mas o menos asi:
Código PHP:
Ver original
  1. $fecha1 = strtotime('2015-07-01');
  2. $fecha2 = strtotime('+15 day', $fecha1);
  3. for($fecha1;$fecha1<=$fecha2;$fecha1=strtotime('+10 day ' . date('Y-m-d',$fecha1))){
  4.     if((strcmp(date('D',$fecha1),'Sun')!=0) and (strcmp(date('D',$fecha1),'Sat')!=0)){
  5.     }
  6. }echo date('Y-m-d D',$fecha1) . '<br />';
es cierto me cuenta los 15 dias pero aun me sigue contando los feriados si coloco del 2015-9-03 me da como fecha 2015-09-19 Sat que es feriado
  #5 (permalink)  
Antiguo 30/09/2015, 07:51
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: fechas en php

estas totalmente seguro que utilizaste el segundo codigo???? porque a mi me arroja 2015-09-23 Wed
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 30/09/2015, 08:43
 
Fecha de Ingreso: noviembre-2012
Mensajes: 139
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: fechas en php

Cita:
Iniciado por xfxstudios Ver Mensaje
estas totalmente seguro que utilizaste el segundo codigo???? porque a mi me arroja 2015-09-23 Wed
si tienes razon error al modificarlo pero cuando le doy a
Código PHP:
$fecha1 strtotime('2015-8-31'); 
$fecha2 strtotime('+15 day'$fecha1);
for(
$fecha1;$fecha1<=$fecha2;$fecha1=strtotime('+10 day ' date('Y-m-d',$fecha1))){ 
    if((
strcmp(date('D',$fecha1),'Sun')!=0) and (strcmp(date('D',$fecha1),'Sat')!=0)){
    }
}
echo 
date('Y-m-d D',$fecha1) . '<br />'
me muestra Sunday y no me deberia mostrar la siguiente fecha
  #7 (permalink)  
Antiguo 30/09/2015, 11:20
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 13 años, 11 meses
Puntos: 131
Respuesta: fechas en php

Ya solo modifica los dias feriados, puse algunos de mexico

Código PHP:
Ver original
  1. <?php
  2. $anio = 2015;
  3. $mes = 9;
  4. $dia = 1;
  5. $fecha_inicial = mktime(0,0,0,$mes,$dia,$anio);
  6. $agregar_dias = 15;
  7. $compensar_domingos = 0;
  8. $compensar_feriados = 0;
  9.  
  10. $dias_feriados_cadena = array("$anio-1-1","$anio-2-24","$anio-3-21","$anio-5-1","$anio-9-16","$anio-11-1","$anio-11-2","$anio-12-25");
  11.  
  12. $dias_feriados_numero = array();
  13. foreach($dias_feriados_cadena as $value)
  14. {
  15.     $dias_feriados_numero[] = date("z",strtotime($value));
  16. }
  17.  
  18. $dias_del_anio = array();
  19. for($i = 1;$i <= $agregar_dias;$i++)
  20. {
  21.     $fecha_inicial_mas_dias = strtotime ( "+$i day" , $fecha_inicial ) ;
  22.    
  23.     $dia_del_anio = date("z",$fecha_inicial_mas_dias);
  24.     foreach($dias_feriados_numero as $value)
  25.     {
  26.         if($value == $dia_del_anio)
  27.         {
  28.             $compensar_feriados++;
  29.         }
  30.     }
  31.    
  32.     if(date("N",$fecha_inicial_mas_dias) == 7)
  33.     {
  34.         $compensar_domingos++;
  35.     }
  36. }
  37.  
  38. $dias_agregar_total = $compensar_feriados + $compensar_domingos;
  39. $agregar_dias += $dias_agregar_total;
  40. echo date ( 'Y-m-d' , strtotime("+$agregar_dias day",$fecha_inicial) );
  41. ?>

Saludos
  #8 (permalink)  
Antiguo 30/09/2015, 13:45
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: fechas en php

Esta clase hace precisamente lo que necesitas: https://github.com/andrejsstepanovs/...ays-calculator
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #9 (permalink)  
Antiguo 30/09/2015, 15:28
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: fechas en php

Código PHP:
Ver original
  1. $fecha1 = strtotime('2015-8-31');  
  2. $fecha2 = strtotime('+15 day', $fecha1);
  3. for($fecha1;$fecha1<=$fecha2;$fecha1=strtotime('+1 day ' . date('Y-m-d',$fecha1))){  
  4.     if((strcmp(date('D',$fecha1),'Sun')!=0) and (strcmp(date('D',$fecha1),'Sat')!=0)){
  5.     }
  6. }
  7. echo date('Y-m-d D',$fecha1) . '<br />';
__________________
[email protected]
HITCEL
  #10 (permalink)  
Antiguo 01/10/2015, 09:14
 
Fecha de Ingreso: noviembre-2012
Mensajes: 139
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: fechas en php

con todo llegue a esto
pero aun no me lo hace bien
Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4.  
  5. $feriados        = array(
  6. '01-01',  //  Año Nuevo (irrenunciable)
  7. '10-04',  //  Viernes Santo (feriado religioso)
  8. '11-04',  //  Sábado Santo (feriado religioso)
  9. '01-05',  //  Día Nacional del Trabajo (irrenunciable)
  10. '21-06',  //  Día de las Glorias Navales
  11. '29-06',  //  San Pedro y San Pablo (feriado religioso)
  12. '16-07',  //  Virgen del Carmen (feriado religioso)
  13. '15-08',  //  Asunción de la Virgen (feriado religioso)
  14. '18-09',  //  Día de la Independencia (irrenunciable)
  15. '19-09',  //  Día de las Glorias del Ejército
  16. '12-10',  //  Aniversario del Descubrimiento de América
  17. '31-10',  //  Día Nacional de las Iglesias Evangélicas y Protestantes (feriado religioso)
  18. '01-11',  //  Día de Todos los Santos (feriado religioso)
  19. '08-12',  //  Inmaculada Concepción de la Virgen (feriado religioso)
  20. '13-12',  //  elecciones presidencial y parlamentarias (puede que se traslade al domingo 13)
  21. '25-12',  //  Natividad del Señor (feriado religioso) (irrenunciable)
  22. );
  23.  
  24.  
  25. echo '<br />';
  26. $fecha1 = strtotime('2015-09-2');
  27. $fecha2 = strtotime('+15 day', $fecha1);
  28. for($fecha1;$fecha1<=$fecha2;$fecha1=strtotime('+1 day ' . date('Y-m-d',$fecha1))){
  29.     foreach ($feriados as $key => $value) {
  30.         if($feriados[$key] == date('d-m',$fecha1)){
  31.             $fecha2 = strtotime('+1 day ' ,$fecha1)
  32.             echo $fecha1 = date('Y-m-d',$fecha2);
  33.  
  34.         }
  35.     }
  36.  
  37.         if( date('D',$fecha1) == 'Sun'){
  38.             $fecha1 = strtotime('+1 day', $fecha1);
  39.         }
  40.  
  41.         //echo "un dia menos : ". date('Y-m-d D',$fecha1) . '<br />';
  42.    
  43. }  
  44. echo '<br />';echo '<br />';
  45. echo date('Y-m-d D',$fecha1) . '<br />';
  46.  ?>
  #11 (permalink)  
Antiguo 01/10/2015, 12:06
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 13 años, 11 meses
Puntos: 131
Respuesta: fechas en php

Cita:
Iniciado por falkon765 Ver Mensaje
con todo llegue a esto
pero aun no me lo hace bien
Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4.  
  5. $feriados        = array(
  6. '01-01',  //  Año Nuevo (irrenunciable)
  7. '10-04',  //  Viernes Santo (feriado religioso)
  8. '11-04',  //  Sábado Santo (feriado religioso)
  9. '01-05',  //  Día Nacional del Trabajo (irrenunciable)
  10. '21-06',  //  Día de las Glorias Navales
  11. '29-06',  //  San Pedro y San Pablo (feriado religioso)
  12. '16-07',  //  Virgen del Carmen (feriado religioso)
  13. '15-08',  //  Asunción de la Virgen (feriado religioso)
  14. '18-09',  //  Día de la Independencia (irrenunciable)
  15. '19-09',  //  Día de las Glorias del Ejército
  16. '12-10',  //  Aniversario del Descubrimiento de América
  17. '31-10',  //  Día Nacional de las Iglesias Evangélicas y Protestantes (feriado religioso)
  18. '01-11',  //  Día de Todos los Santos (feriado religioso)
  19. '08-12',  //  Inmaculada Concepción de la Virgen (feriado religioso)
  20. '13-12',  //  elecciones presidencial y parlamentarias (puede que se traslade al domingo 13)
  21. '25-12',  //  Natividad del Señor (feriado religioso) (irrenunciable)
  22. );
  23.  
  24.  
  25. echo '<br />';
  26. $fecha1 = strtotime('2015-09-2');
  27. $fecha2 = strtotime('+15 day', $fecha1);
  28. for($fecha1;$fecha1<=$fecha2;$fecha1=strtotime('+1 day ' . date('Y-m-d',$fecha1))){
  29.     foreach ($feriados as $key => $value) {
  30.         if($feriados[$key] == date('d-m',$fecha1)){
  31.             $fecha2 = strtotime('+1 day ' ,$fecha1)
  32.             echo $fecha1 = date('Y-m-d',$fecha2);
  33.  
  34.         }
  35.     }
  36.  
  37.         if( date('D',$fecha1) == 'Sun'){
  38.             $fecha1 = strtotime('+1 day', $fecha1);
  39.         }
  40.  
  41.         //echo "un dia menos : ". date('Y-m-d D',$fecha1) . '<br />';
  42.    
  43. }  
  44. echo '<br />';echo '<br />';
  45. echo date('Y-m-d D',$fecha1) . '<br />';
  46.  ?>
Probaste el mio? porque si funciona
  #12 (permalink)  
Antiguo 01/10/2015, 13:34
 
Fecha de Ingreso: noviembre-2012
Mensajes: 139
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: fechas en php

Cita:
Iniciado por hackjose Ver Mensaje
Probaste el mio? porque si funciona
no me funciono me mostraba otra fecha
Código PHP:
$anio date('Y');
$mes 09;
$dia 05;
$fecha_inicial mktime(0,0,0,$mes,$dia,$anio);
$agregar_dias 15;
$compensar_domingos 0;
$compensar_feriados 0;
 
$dias_feriados_cadena = array("$anio-01-01","$anio-04-10","$anio-04-11","$anio-05-01","$anio-06-21","$anio-06-29","$anio-07-16","$anio-08-15","$anio-09-18","$anio-09-19","$anio-10-12","$anio-10-31","$anio-11-01","$anio-12-08","$anio-12-13","$anio-12-25");
 
$dias_feriados_numero = array();
foreach(
$dias_feriados_cadena as $value)
{
    
$dias_feriados_numero[] = date("z",strtotime($value));
}
 
$dias_del_anio = array();
for(
$i 1;$i <= $agregar_dias;$i++)
{
    
$fecha_inicial_mas_dias strtotime "+$i day" $fecha_inicial ) ;
    
    
$dia_del_anio date("z",$fecha_inicial_mas_dias);
    foreach(
$dias_feriados_numero as $value)
    {
        if(
$value == $dia_del_anio)
        {
            
$compensar_feriados++;
        }
    }
    
    if(
date("N",$fecha_inicial_mas_dias) == 7)
    {
        
$compensar_domingos++;
    }
}
 
$dias_agregar_total $compensar_feriados $compensar_domingos;
$agregar_dias += $dias_agregar_total;
echo 
date 'Y-m-d' strtotime("+$agregar_dias day",$fecha_inicial) ); 
asi quedo despues de probarla y no funciono

Etiquetas: fecha, registro
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 00:29.