Foros del Web » Programando para Internet » PHP »

cuantos sabados y cuantos domigos hay entre dos fecha en php

Estas en el tema de cuantos sabados y cuantos domigos hay entre dos fecha en php en el foro de PHP en Foros del Web. buenos dias amigos estoy desarrollando una aplicacion y una de las funciones de esta es que entre dos fechas me indique cuantos dias sabados y ...
  #1 (permalink)  
Antiguo 31/01/2011, 08:47
 
Fecha de Ingreso: enero-2011
Mensajes: 5
Antigüedad: 13 años, 3 meses
Puntos: 0
cuantos sabados y cuantos domigos hay entre dos fecha en php

buenos dias amigos

estoy desarrollando una aplicacion y una de las funciones de esta es que entre dos fechas me indique cuantos dias sabados y cuantos dias domingos hay entre las dos.

he buscado por todos los lados y no he podido encontra alguna solucion

agracdeceria mucho a alguien que me hechara una manita.
  #2 (permalink)  
Antiguo 31/01/2011, 09:38
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 14 años, 5 meses
Puntos: 19
Respuesta: cuantos sabados y cuantos domigos hay entre dos fecha en php

Hola,

Se me ocurre, por ejemplo:

$cantidad=0;

Te creas un vector con los dias de la semana.

Coges la fecha de inicio que te pasan y extraes el día de la semana con date("l",$fecha).

Te sitúas en esa posición del vector.

Mientras no sea la fecha de fin:

- Si la fecha es sabado o domingo, $cantidad++;

Puedes hacerlo mucho más eficiente, por ejemplo:

Suponer los días de la semana como un vector circular, calcular lo que te queda para acabar un mes determinado y situarte en el día nuevo...

No sé si me he explicado.

Espero que te sirva.

Un saludo!
  #3 (permalink)  
Antiguo 31/01/2011, 09:43
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 3 meses
Puntos: 128
Respuesta: cuantos sabados y cuantos domigos hay entre dos fecha en php

Compa, yo hice algo parecido, cree una tabla que tuviera un calendaria (fechas hasta x año) , la tabla contiene, la fecha , el nombre del dia y el nombre del mes (aunque este tal vez no te sea necesario), luego mediante programacion(querys) a la consulta le coloque que contara los demas dias en un rango de fechas menos sabado, domingo y festivos , claro como diceGrupoC con $cantidad que fuera decrementando cada vez que encontrara un dia de lun-vie. y que la fecha fuera incrementando en uno . saludos.
  #4 (permalink)  
Antiguo 31/01/2011, 09:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: cuantos sabados y cuantos domigos hay entre dos fecha en php

Trata algo así
Código PHP:
Ver original
  1. <?php
  2. function calcDays(){
  3.     $n = 0;
  4.     if(func_num_args() > 0){
  5.         foreach(func_get_args() as $value){
  6.             if(is_string($value) || (is_array($value) && count($value) == 1)){
  7.                 $value = is_string($value) ? $value : $value[0];
  8.                 $n += date('w', strtotime($value)) == 0 || date('w', strtotime($value)) == 6 ? 1 : 0;
  9.             }
  10.             elseif(is_array($value) && count($value) >= 2){
  11.                 $minNum = strtotime($value[0]) < strtotime($value[1]) ? $value[0] : $value[1];
  12.                 $maxNum = strtotime($value[0]) > strtotime($value[1]) ? $value[0] : $value[1];
  13.                 while(true){
  14.                     $addOne = empty($addOne) ? $minNum : date('Y-m-d', $addOne);
  15.                     $n += date('w', strtotime($addOne)) == 0 || date('w', strtotime($addOne)) == 6 ? 1 : 0;
  16.                     if(($addOne = strtotime('+1 day ' . $addOne)) > strtotime($maxNum)){ break;}
  17.                 }
  18.                 unset($addOne);
  19.             }
  20.         }
  21.     }
  22.     return $n;
  23. }
  24.  
  25. echo calcDays(array('2011-01-01', '2011-02-01')) . '<br />';
  26. echo calcDays(array('2011-01-01', '2011-02-01'), '2011-03-05', array('2011-03-06')) . '<br />';
  27. echo calcDays('2011-01-01', '2011-01-02', '2011-01-08') . '<br />';
__________________
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 31/01/2011, 11:42
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: cuantos sabados y cuantos domigos hay entre dos fecha en php

Puedes usar la clase DateTime:
Código PHP:
Ver original
  1. <?php
  2. $starDate = new DateTime('2011-01-01');
  3. $endDate = new DateTime('2011-01-31');
  4. $interval = $starDate->diff($endDate);
  5. $numberOfDays = $interval->format('%d days');
  6. for($i = 1; $i <= $numberOfDays; $i++){
  7.      if($starDate->format('l')== 'Saturday' || $starDate->format('l')== 'Sunday'){
  8.             echo $starDate->format('y-m-d (D)')."<br/>";
  9.      }
  10.      $starDate->modify("+1 days");
  11.                
  12. }
  13. ?>

Prueba el fragmento de código.
__________________
Saludos.
  #6 (permalink)  
Antiguo 31/01/2011, 12:52
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: cuantos sabados y cuantos domigos hay entre dos fecha en php

@JaimeSavinesk, el problema es que la clase DateTime trabaja con periodos no mayores de 1 mes, en la parte de día. Ahora eso se resuelve usando en la variable $numberOfDays verificando también los meses algo así
Código PHP:
Ver original
  1. $numberOfDays = $interval->format('%y %m %d');
  2. $e = explode(' ', $numberOfDays);
  3. $numberOfDays = intval($e[0] * 365.25) + intval($e[1] * 30) + $e[2];
Muy bueno, mucho más corto

Aunque yo lo que hago es más bien verificar si es string, o un array solo o dos array
__________________
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; 31/01/2011 a las 13:02
  #7 (permalink)  
Antiguo 31/01/2011, 15:02
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: cuantos sabados y cuantos domigos hay entre dos fecha en php

Cita:
Iniciado por abimaelrc Ver Mensaje
@JaimeSavinesk, el problema es que la clase DateTime trabaja con periodos no mayores de 1 mes, en la parte de día. Ahora eso se resuelve usando en la variable $numberOfDays verificando también los meses algo así
Código PHP:
Ver original
  1. $numberOfDays = $interval->format('%y %m %d');
  2. $e = explode(' ', $numberOfDays);
  3. $numberOfDays = intval($e[0] * 365.25) + intval($e[1] * 30) + $e[2];
Muy bueno, mucho más corto

Aunque yo lo que hago es más bien verificar si es string, o un array solo o dos array
No lo especificaba el problema pero es valida la observación a un que no pretendía mas que poner la base con un ejemplo. Ahora que al parecer esa es la idea es necesario hacer un cambio mínimo en el ciclo:

Código PHP:
Ver original
  1. $starDate = new DateTime('2011-01-01');
  2. $endDate = new DateTime('2011-03-01')
  3. while( $starDate <= $endDate){
  4.      if($starDate->format('l')== 'Saturday' || $starDate->format('l')== 'Sunday'){
  5.                     echo $starDate->format('y-m-d (D)')."<br/>";
  6.      }
  7.      $starDate->modify("+1 days");
  8.                
  9. }
Por cierto ojo probarlo antes de usarlo, que ahora no tengo donde probarlo.
__________________
Saludos.
  #8 (permalink)  
Antiguo 31/01/2011, 15:07
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: cuantos sabados y cuantos domigos hay entre dos fecha en php

Ohhh, desconocía que se podía hacer una comparación de esos dos objetos de esa forma, muy bueno

Edito: Sin llegar a saber sobre esa forma yo lo hubiera hecho usando el método getTimestamp.
Código PHP:
Ver original
  1. <?php
  2. $startDate = new DateTime('2011-01-01');
  3. $endDate = new DateTime('2011-01-31');
  4. while($startDate->getTimestamp() <= $endDate->getTimestamp()){
  5.     if($startDate->format('l')== 'Saturday' || $startDate->format('l')== 'Sunday'){
  6.         echo $startDate->format('Y-m-d (D)')."<br/>";
  7.     }
  8.     $startDate->modify("+1 days");
  9. }
__________________
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; 31/01/2011 a las 15:13
  #9 (permalink)  
Antiguo 01/02/2011, 14:15
 
Fecha de Ingreso: enero-2011
Mensajes: 5
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: cuantos sabados y cuantos domigos hay entre dos fecha en php

buenas tardes a todos

agradesco inmensamenta la colaboracion y el apoyo de todos ente mi peticion

me llamo mucho la atencion el codigo de JaimeSavines y tengo una pregunta:

el codigo que estructuraste calcula solos los dias domingos ? por que solo veo un
echo $startDate->format('Y-m-d (D)')."<br/>";
  #10 (permalink)  
Antiguo 01/02/2011, 14:27
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: cuantos sabados y cuantos domigos hay entre dos fecha en php

Lo que hace el fragmento de código es imprimir en pantalla todas las fechas que corresponden o bien a un domingo o a un sábado el formato que veras es algo como lo siguiente.
20011-02-05 (Sat or Mon) vaya, veras una lista de fechas con el día correspondiente encerrado entre paréntesis. si solo quieres la cantidad de sábados y domingos solo necesitas meter contadores en el ciclo.
__________________
Saludos.
  #11 (permalink)  
Antiguo 01/02/2011, 16:05
 
Fecha de Ingreso: enero-2011
Mensajes: 5
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: cuantos sabados y cuantos domigos hay entre dos fecha en php

que pena jaimesavines es que soy nuevo en esto del php te agradeceria mucho si me pudieras ayudar con lo de los contadores dentro del ciclo.

ya probe el codigo y funciona perfectamente.

mil gracias por tu ayuda
  #12 (permalink)  
Antiguo 01/02/2011, 16:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: cuantos sabados y cuantos domigos hay entre dos fecha en php

Haz lo que te indicó, pasa por el manual y mira la clase y los varios ejemplos que tiene y también los comentarios que tienen varios usuarios en la documentación oficial.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #13 (permalink)  
Antiguo 02/02/2011, 13:25
 
Fecha de Ingreso: enero-2011
Mensajes: 5
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: cuantos sabados y cuantos domigos hay entre dos fecha en php

buenas tardes amigos

estube chekeando el manuela que me idico abimaelrc y encontre este tema
[URL="http://www.forosdelweb.com/wiki/PHP:_%C2%BFComo_contar_valores_repetitivos_de_un_a rray"] PHP: ¿Como contar valores repetitivos de un array[/URL]

me parecio interesante por que reune los valores repetitivos y los cuenta.

el problema es que no se como implementarlo en el codigo de Jaime Savines

mil gracias

Última edición por aanalisis5; 02/02/2011 a las 13:54

Etiquetas: dos, fechas
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 17:53.