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: 15 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: 15 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
