Calcular días hábiles en PHP

4
Calcular días hábiles en PHP Este escript en php que sirve para calcular los días habiles. En mi caso se ocupa en una oficina, y lo nesecitan del año 2003 al 2008 pero se pueden mover los valores del ‘for' en el script, lo mismo que los valores del array de inhabiles, donde se pueden agregar días que no quieren ser contados. El ejemplo funciona con un fichero index.php : 1. <html> 2. <head> 3. <title>DEMO</title> 4. <script src="js/mootools.js" type=text/javascript></script> 5. <script> 6. function ajax(){ 7. new Ajax('script.php', { 8. update: $('resultado'), 9. postBody: $('form').toQueryString() 10. }).request(); 11. } 12. </script> 13. </head> 14. <body> 15. <form id="form" onSubmit="javascript: ajax(); return false;"> 16. <label>Día:</label> 17. <input type="text" size="2" name="day" value="<?php echo date("j"); ?>" />

Transcript of Calcular días hábiles en PHP

Page 1: Calcular días hábiles en PHP

Calcular días hábiles en PHP

Este escript en php que sirve para calcular los días habiles. En mi caso se ocupa en una oficina, y lo nesecitan del año 2003 al 2008 pero se pueden mover los valores del ‘for' en el script, lo mismo que los valores del array de inhabiles, donde se pueden agregar días que no quieren ser contados.

El ejemplo funciona con un fichero index.php :

1. <html> 2. <head>

3. <title>DEMO</title>

4. <script src="js/mootools.js" type=text/javascript></script>

5. <script>

6. function ajax(){

7. new Ajax('script.php', {

8. update: $('resultado'),

9. postBody: $('form').toQueryString()

10. }).request();

11. }

12. </script>

13. </head>

14. <body>

15. <form id="form" onSubmit="javascript: ajax(); return false;">

16. <label>Día:</label>

17. <input type="text" size="2" name="day" value="<?php echo date("j"); ?>" />

18. <label>Mes:</label>

19. <input type="text" size="2" name="month" value="<?php echo date("n"); ?>" />

20. <label>Año:</label>

21. <input type="text" size="4" name="year" value="<?php echo date("Y"); ?>" />

22. <label>Días a Calcular:</label>

Page 2: Calcular días hábiles en PHP

23. <input type="text" size="2" name="daysto" />

24. <input type="submit" id="btn" value="Calcular"/>

25. </form>

26. <br />

27. <div id="resultado" style="text-align:center;"></div>

28. </body>

29. </html>

con includes a la librería mootools y un fichero script.php que se encarga de realizar el cálculo:

1. <?php 2.

3. // Todo exepto la función get_days_for_month, sacada de esta web

4. // http://codedump.jonasjohn.de/snippets/get_days_for_month.htm

5. // modificada para que funcione con años bisiestos es de mi autoria

6. // [email protected]

7.

8. function get_days_for_month($m,$y){

9. if($m == 02){

10. if(($y % 4 == 0) && (($y % 100 != 0) || ($y % 400 == 0))){

11. return 29;

12. }else{

13. return 28;

14. }

15. }

16.     if ($m == 4 || $m == 6 || $m == 9 || $m == 11){

17.         return 30;

18. }else{

19.     return 31;

Page 3: Calcular días hábiles en PHP

20. }

21. }

22.

23. extract($_POST);

24. if(!isset($day) or !isset($month) or !isset($year) or !isset($daysto)){ exit; }

25.

26. $inhabiles = array('5/2/2007');

27. $habiles = array();

28.

29. for($y=2003; $y<=2008; $y++){

30. for($m=1; $m<=12; $m++){

31. for($d=1; $d<=get_days_for_month($m,$y); $d++){

32. $date = date('D', mktime(0,0,0,$m,$d,$y));

33. if($date == 'Sat' or $date == 'Sun'){

34. $inhabiles[] = date("j/n/Y", mktime(0,0,0,$m,$d,$y));

35. }else{

36. if(!in_array(date("j/n/Y", mktime(0,0,0,$m,$d,$y)),$inhabiles)){

37. $habiles[] = date("j/n/Y", mktime(0,0,0,$m,$d,$y));

38. }

39. }

40. }

41. }

42. }

43.

44. $date = $day.'/'.$month.'/'.$year;

45. $contador = array_search($date,$habiles);;

46. echo '<b>'.$habiles[$daysto+$contador].'</b>';

Page 4: Calcular días hábiles en PHP

47.

48. ?>