------------------------------------------------------------------------------- $Id$ -----------------------------------------------------------------------------*/ require_once 'Date/Span.php'; /** * Representa una hora. * * @package HE * @abstract * @version $Rev$ * @author Gonzalo Merayo */ class MECON_Tiempo_Hora extends Date_Span { function set($str) { $str = strval($str); if (preg_match('/^\d+$/', $str)) { if ($str < 24) { $str = sprintf('0:%02d:00:00', $str ); } elseif ($str == 24 or $str == 2400) { $str = '1:00:00:00'; } elseif ($str < 2400) { switch (strlen($str)) { case 2: $str = sprintf('0:%02d:%02d:00', $str{0}, $str{1}); break; case 3: $str = sprintf('0:%02d:%02d:00', $str{0}, $str{1} . $str{2}); break; case 4: $str = sprintf('0:%02d:%02d:00', $str{0} . $str{1}, $str{2} . $str{3}); break; } } else { return false; } } elseif (preg_match('/^(\d{0,2})\D(\d{1,2})$/', $str, $m)) { if ($m[1] < 24 and $m[2] < 60) { $str = sprintf('0:%02d:%02d:00', $m[1], $m[2]); } elseif ($m[1] == 24 and $m[2] == 0) { $str = '1:00:00:00'; } else { return false; } } elseif (preg_match('/^(\d{0,2})\D(\d{1,2})\D(\d{1,2})$/', $str, $m)) { if ($m[1] < 24 and $m[2] < 60 and $m[3] < 60) { $str = sprintf('0:%02d:%02d:%02d', $m[1], $m[2], $m[3]); } elseif ($m[1] == 24 and $m[2] == 0 and $m[3] == 0) { $str = '1:00:00:00'; } else { return false; } } else { return false; } $this->setFromString($str, "%D:%H:%M:%S"); return true; } function get() { return $this->format("%E:%M"); } } ?>