Question:
Date: 18-11-2015 11:49:10
(In Spanish)
Tengo este enunciado:
Crea una clase Hora con atributos para las horas, los minutos y los segundos de la hora.
Incluye, al menos, los siguientes métodos:
Constructor predeterminado con el 00:00:00 como hora por defecto.
leer() : pedirá al usuario las horas, los minutos y los segundos.
valida() : comprobará si la hora es correcta; si no lo es la ajustará. Será un método
auxiliar (privado) que se llamará en el constructor parametrizado y en leer()
print() : mostrará la hora
aSegundos() : devolverá el número de segundos transcurridos desde la medianoche.
Bueno gente esta bien el metodo aSegundos() y plantiada la clase? El metodo a segundos lo que hago es declarar una variable $hora y poneler la hora. Despues con la función explore convierto a ese string en un array. Despues en segundosTranscurridos[0] a la hora la convierto a segundos, los minutos tambien y sumo todo. Despues resto la hora que ingreso el usuario con el metodo leer y le resto la otra hora para que me den los segundos transcurridos.
------------------------------------------------------------------------------------------------------------------------------------------------------------
Modificación
aSegundos() : devolverá el número de segundos transcurridos desde la medianoche.
segundosDesde(Hora) : devolverá el número de segundos entre la hora y la
proporcionada.
Replantee metodo aSegundos y agregue un nuevo metodo
Si alguien puede darme un consejo o algo por que estoy medio perdido, no se si estara bien.
¡Saludos!
Votes: 0 - Answers: 2 - Views: 14 Share on: Google Facebook Twitter LinkedIn Link
PHP POO Clase Hora Ejercicio[Resolved]
Buenas comunidad yo de nuevo por aquí, quemando pestañas con POO jajajTengo este enunciado:
Crea una clase Hora con atributos para las horas, los minutos y los segundos de la hora.
Incluye, al menos, los siguientes métodos:
Constructor predeterminado con el 00:00:00 como hora por defecto.
leer() : pedirá al usuario las horas, los minutos y los segundos.
valida() : comprobará si la hora es correcta; si no lo es la ajustará. Será un método
auxiliar (privado) que se llamará en el constructor parametrizado y en leer()
print() : mostrará la hora
aSegundos() : devolverá el número de segundos transcurridos desde la medianoche.
<?php class Hora { private $second; private $minute; private $hour; public function __construct($h = "00", $m = "00", $s = "00") { $this->hour = $h; $this->minute = $m; $this->second = $s; } public function leer($h, $m, $s) { $this->hour = $h; $this->minute = $m; $this->second = $s; $this->valida(); } private function valida() { if($this->hour < 0 || $this->hour > 23) { $hOk = false; } else { $hOk = true; } if($this->minute < 0 || $this->minute > 59) { $mOk = false; } else { $mOk = true; } if($this->second < 0 || $this->second > 59) { $sOk = false; } else { $sOk = true; } //Si da alguna verdadero con el signo de negacion lo vuelvo a verdadero y inicio todo en 0. if(!$hOk || !$mOk || !$sOk) { $this->hour = "00"; $this->minute = "00"; $this->second = "00"; } } public function pintar() { echo 'Hora: '.$this->hour.':'.$this->minute.':'.$this->second; } public function aSegundos() { $hora = "24:00:00"; $separa[0] = explode(":", $hora); $segundosTranscurridos[0] = ($this->hour*60*60) + $this->minute*60+ $this->second; $segundosTranscurridos[1] = ($separa[0][0]*60*60) + $separa[0][1]*60 + $separa[0][2]; $segundosTranscurridos = $segundosTranscurridos[1] - $segundosTranscurridos[0]; echo '<br/>'.$segundosTranscurridos.' Segundos'; } } $hora = new Hora(); $hora->leer("07","00","00"); $hora->pintar(); $hora->aSegundos(); ?>
Bueno gente esta bien el metodo aSegundos() y plantiada la clase? El metodo a segundos lo que hago es declarar una variable $hora y poneler la hora. Despues con la función explore convierto a ese string en un array. Despues en segundosTranscurridos[0] a la hora la convierto a segundos, los minutos tambien y sumo todo. Despues resto la hora que ingreso el usuario con el metodo leer y le resto la otra hora para que me den los segundos transcurridos.
------------------------------------------------------------------------------------------------------------------------------------------------------------
Modificación
aSegundos() : devolverá el número de segundos transcurridos desde la medianoche.
segundosDesde(Hora) : devolverá el número de segundos entre la hora y la
proporcionada.
Replantee metodo aSegundos y agregue un nuevo metodo
public function aSegundos() { $hora1 = mktime('24','00','00'); $hora2 = mktime($this->hour, $this->minute, $this->second); $segundos = $hora1 - $hora2; echo '<p>'.$segundos.' Segundos.</p>'; } public function deSegundos($seconds) { $nuevaHora = strtotime('+'.$seconds.' seconds', strtotime('00-00-00') ); $nuevaHora = date('H:i:s', $nuevaHora); echo 'Hora: '.$nuevaHora; }
Si alguien puede darme un consejo o algo por que estoy medio perdido, no se si estara bien.
¡Saludos!
Votes: 0 - Answers: 2 - Views: 14 Share on: Google Facebook Twitter LinkedIn Link
Answers:
-
Date: 19-11-2015 09:19:14 Hola Gonzalo,
Tal vez te convenga utilizar la clase DateTime, podrías reducir la cantidad de líneas y te ahorras validaciones. Votes: 3 - Link answer -
Date: 19-11-2015 09:37:20 Si justo recien hice otro metodo para para comprar hora, y use esa clase.
public function igualQue($hora) { $datetime1 = new DateTime($hora); $datetime2 = new DateTime($this->hour.':'.$this->minute.':'.$this->second); if($datetime1 == $datetime2) { echo '<p>Son iguales</p>'; } else { echo '<p>No son iguales</p>'; } }
Seguire mirando un poco, gracias Ernesto. Votes: 3 - Link answer
To actively participate in the community first must authenticate, enter the system.Sign In