PHP - Cambiar formato fecha para contar dias habiles

   
Vista:

Cambiar formato fecha para contar dias habiles

Publicado por patricio (1 intervención) el 14/02/2013 01:32:17
Hola!, necesito contar los días habiles, descontando fechas festivas. Pues encontré un script php que lo hace perfecto! pero mi problema es que este script lee las fechas como dia mes año, y yo las tengo almacenadas en mysql como año, mes, dia.

Lo que necesito es modificar el script, pero no lo he logrado. Por favor, si me pudieran ayudar a que el script pueda leer fechas como año mes dia, se los agradeceré mucho!. El script lo saqué del blog de felipe-pena.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
 
//1.- Pasar la fecha inicial y final a maketime y obtener un arreglo con todas los días intermedios. 
 
function DiasHabiles($fecha_inicial,$fecha_final)
{
list($dia,$mes,$year) = explode("-",$fecha_inicial);
$ini = mktime(0, 0, 0, $mes , $dia, $year);
list($diaf,$mesf,$yearf) = explode("-",$fecha_final);
$fin = mktime(0, 0, 0, $mesf , $diaf, $yearf);
 
$r = 1;
while($ini != $fin)
{
$ini = mktime(0, 0, 0, $mes , $dia+$r, $year);
$newArray[] .=$ini;
$r++;
}
return $newArray;
}
 
 
 
//2.- Una función que evalué el arreglo de fechas obtenido, que contenga los feriados nacionales que correspondan (restando) y que reste los sábados y domingos. 
 
function Evalua($arreglo)
{
$feriados        = array(
'1-1',  //  Año Nuevo (irrenunciable)  
'10-4',  //  Viernes Santo (feriado religioso)  
'11-4',  //  Sábado Santo (feriado religioso)  
'1-5',  //  Día Nacional del Trabajo (irrenunciable)  
'21-5',  //  Día de las Glorias Navales  
'29-6',  //  San Pedro y San Pablo (feriado religioso)  
'16-7',  //  Virgen del Carmen (feriado religioso)  
'15-8',  //  Asunción de la Virgen (feriado religioso)  
'18-9',  //  Día de la Independencia (irrenunciable)  
'19-9',  //  Día de las Glorias del Ejército  
'12-10',  //  Aniversario del Descubrimiento de América  
'31-10',  //  Día Nacional de las Iglesias Evangélicas y Protestantes (feriado religioso)  
'1-11',  //  Día de Todos los Santos (feriado religioso)  
'8-12',  //  Inmaculada Concepción de la Virgen (feriado religioso)  
'13-12',  //  elecciones presidencial y parlamentarias (puede que se traslade al domingo 13)  
'25-12',  //  Natividad del Señor (feriado religioso) (irrenunciable)  
);
 
$j= count($arreglo);
 
for($i=0;$i<=$j;$i++)
{
$dia = $arreglo[$i];
 
        $fecha = getdate($dia);
            $feriado = $fecha['mday']."-".$fecha['mon'];
                    if($fecha["wday"]==0 or $fecha["wday"]==6)
                    {
                        $dia_ ++;
                    }
                        elseif(in_array($feriado,$feriados))
                        {
                            $dia_++;
                        }
}
$rlt = $j - $dia_;
return $rlt;
}
 
 
 
//3.- Se llama a las funciones. 
$CantidadDiasHabiles = Evalua(DiasHabiles('19-10-2010','28-12-2010'));
 
echo   $CantidadDiasHabiles;
 
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Cambiar formato fecha para contar dias habiles

Publicado por Jose Manuel josema@orbisapientia.com (43 intervenciones) el 15/02/2013 08:40:32
Hola Patricio:

Tal vez te sirva esto:

http://donnierock.wordpress.com/2012/06/26/convertirfechasphp/

Saludos,

José Manuel
=======================================
http://www.orbisapientia.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar