]> git.llucax.com Git - mecon/meconlib.git/blob - lib/Tiempo/Hora.php
Se empieza a migrar a la nueva estructura de directorios.
[mecon/meconlib.git] / lib / Tiempo / Hora.php
1 <?php
2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +--------------------------------------------------------------------+
4 // |                          HORAS EXTRA                               |
5 // +--------------------------------------------------------------------+
6 // |    Sistema de Horas Extra - Ministerio de Economía - Argentina     |
7 // +--------------------------------------------------------------------+
8 // | Creado: lun abr 22 16:05:33 ART 2002                               |
9 // | Autor:  Gonzalo Merayo <gmeray@mecon.gov.ar>                    |
10 // +--------------------------------------------------------------------+
11 //
12 // $URL$
13 // $Rev$
14 // $Date$
15 // $Author$
16 //
17
18 require_once "Time/Span.php";
19
20 /**
21  * Representa un Intervalo entre 2 horas del mismo dia
22  *
23  * @package HE
24  * @abstract
25  * @version $Rev$
26  * @author  Gonzalo Merayo <gmeray@mecon.gov.ar>
27  */
28 class Hora extends Time_Span {
29
30   function set($str)
31   {
32     $str = strval($str);
33     if (preg_match('/^\d+$/', $str)) {
34         if ($str < 24) {
35             $str = sprintf('0:%02d:00:00', $str );
36         } elseif ($str == 24 or $str == 2400) {
37             $str = '1:00:00:00';
38         } elseif ($str < 2400) {
39             switch (strlen($str)) {
40                 case 2:
41                     $str = sprintf('0:%02d:%02d:00', $str{0}, $str{1});
42                     break;
43                 case 3:
44                     $str = sprintf('0:%02d:%02d:00', $str{0}, $str{1} . $str{2});
45                     break;
46                 case 4:
47                     $str = sprintf('0:%02d:%02d:00', $str{0} . $str{1}, $str{2} . $str{3});
48                     break;
49             }
50         } else {
51             return false;
52         }
53     } elseif (preg_match('/^(\d{0,2})\D(\d{1,2})$/', $str, $m)) {
54         if ($m[1] < 24 and $m[2] < 60) {
55             $str = sprintf('0:%02d:%02d:00', $m[1], $m[2]);
56         } elseif ($m[1] == 24 and $m[2] == 0) {
57             $str = '1:00:00:00';
58         } else {
59             return false;
60         }
61     } elseif (preg_match('/^(\d{0,2})\D(\d{1,2})\D(\d{1,2})$/', $str, $m)) {
62         if ($m[1] < 24 and $m[2] < 60 and $m[3] < 60) {
63             $str = sprintf('0:%02d:%02d:%02d', $m[1], $m[2], $m[3]);
64         } elseif ($m[1] == 24 and $m[2] == 0 and $m[3] == 0) {
65             $str = '1:00:00:00';
66         } else {
67             return false;
68         }
69     } else {
70         return false;
71     }
72     $this->setFromString($str, "%D:%H:%M:%S");
73     return true;
74   }
75
76   function get()
77   {
78     return $this->format("%E:%M");
79   }
80
81 }
82 // $Id$
83 ?>