Seria buena idea crees TU tipo de datos y podria llamarse TimeRange:
Código PHP:
Ver originalInterface ITimeRange
{
public function setIni($time);
public function setFin($time);
}
/*
@author: Pablo Bozzolo (italico76)
*/
Class TimeRange implements ITimeRange
{
protected $ini;
protected $fin;
public function __construct($ini=null,$fin=null)
{
$this->ini = $ini;
$this->fin = $fin;
}
/*
@author: glavic at gmail dot com
*/
protected function validateDate($date, $format = 'Y-m-d H:i:s')
{
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date;
}
public function setIni($time)
{
if ((!$this->validateDate($time,'h:i')) AND (!$this->validateDate('0'.$time,'h:i')))
throw new Exception ("Formato de tiempo invalido $time");
$this->ini = $time;
return $this;
}
public function setFin($time)
{
if ((!$this->validateDate($time,'h:i')) AND (!$this->validateDate('0'.$time,'h:i')))
throw new Exception ("Formato de tiempo invalido $time");
$this->fin = $time;
return $this;
}
public function getIni()
{
return $this->ini;
}
public function getFin()
{
return $this->fin;
}
public function getRange()
{
return array($this->ini,$this->fin); }
}
Asi lo usas:
Código PHP:
Ver original// Cargo datos:
// admito distintas formas para introducirlos
$rangos[] = new TimeRange('6:30','8:00'); // mi forma preferida :-)
$rangos[] = (new TimeRange)->setIni('05:00')->setFin('09:00'); // otra forma soportada
$rangos[] = (new TimeRange)->setIni('7:00')->setFin('7:00');
// ...
// los leo cuando los necesito
foreach ($rangos as $t)
echo $t->getIni().' a '.$t->getFin()."\n<br/>";
Logicamente se hace un chequeo de "formato de tiempo valido" en la clase... podria ser opcional pero se hace de una vez por seguridad y otros tipos de formatos que podrias admitir (con AM / PM) y
otras formas de hacer los chequeos de validez
La clase y la interfaz deben ser incluidas como librerias al inicio de tu script por prolijidad
Documentacion:
http://www.php.net/manual/en/datetime.formats.date.php http://www.php.net/manual/en/datetime.formats.time.php
--
Creeria que la forma mas facil de cargar los datos es usando el constructor:
Código PHP:
Ver original$rangos[] = new TimeRange('6:30','8:00');
$rangos[] = new TimeRange('9:00','5:30');