Buenas comunidad, tengo el siguiente enunciado.
Cita: Crea una clase Fecha con atributos para el día, el mes y el año de la fecha.
Incluye, al menos, los siguientes métodos:
- Constructor predeterminado con el 1-1-1900 como fecha por defecto.
- Constructor parametrizado con día, mes y año.
- leer() : pedirá al usuario el día (1 a 31), el mes (1 a 12) y el año (1900 a 2050).
- bisiesto() : indicará si el año de la fecha es bisiesto o no.
- diasMes(int) : devolverá el número de días del mes que se le indique (para el año de la fecha).
- valida() : comprobará si la fecha es correcta (entre el 1-1-1900 y el 31-12-2050); si el día no es correcto, lo pondrá a 1; si el mes no es correcto, lo pondrá a 1; y si el año no es correcto, lo pondrá a 1900. Será un método auxiliar (privado). Este método se llamará en el constructor parametrizado y en leer() .
- diasTranscurridos() : devolverá el número de días transcurridos desde el 1-1-1900 hasta la fecha.
- diaSemana() : devolverá el día de la semana de la fecha (0 para domingo, ..., 6 para sábado). El 1-1-1900 fue domingo.
- siguiente() : pasará al día siguiente.
- anterior() : pasará al día anterior.
Esta seria la clase
Código PHP:
Ver original<?php
class Fecha {
private $day;
private $month;
private $year;
public function __construct($day = 1, $month = 1, $year = 1900) {
$this->day = $day;
$this->month = $month;
$this->year = $year;
}
public function leer($day, $month, $year) {
if($this->validarFecha($day, $month, $year)) {
$this->day = $day;
$this->month = $month;
$this->year = $year;
}
else {
echo 'La fecha no es valida!!!';
}
}
private function validarFecha($day, $month, $year) {
if($day > 0 && $day < 32) {
$dayOk = true;
}
else {
$dayOk = false;
}
if($month > 0 && $month < 13) {
$monthOk = true;
}
else {
$monthOk = false;
}
if($year >= 1900 && $year <= 2050) {
$yearOk = true;
}
else {
$yearOk = false;
}
if($dayOk && $monthOk && $yearOk) {
return true;
}
else {
return false;
}
}
public function esBisiesto() {
if($this->year % 4 == 0 && ($this->year % 100 != 0 || $this->year % 400 == 0)) {
echo 'Es Bisiesto<br />';
}
else {
echo 'No es Bisiesto<br />';
}
}
public function diaMes($month) {
$fecha = "$this->day-$month-$this->year";
$diaMes = date('t', $timestamp); echo 'El mes '.$month.' tiene '.$diaMes.' dia/s';
}
public function diasTranscurridos() {
$diasActual = gregoriantojd($fechaActual[1], $fechaActual[0], $fechaActual[2]);
$diasTranscurridos = $diasActual - $diasDefault;
echo 'Dias trancurridos de la fecha 1-1-1900 hasta la fecha actual '.$diasTranscurridos.' diasz<br />';
}
public function diaSemana() {
echo 'El dia de la fecha 1-1-1900 es '.$diaSemana;
}
public function siguiente() {
$this->day++;
}
public function anterior() {
$this->day--;
}
}
$fecha = new Fecha();
$fecha->leer(1,1,2014);
$fecha->diasTranscurridos();
$fecha->diaSemana();
$fecha->anterior();
?>
En el metodo
diasTranscurridos() tuve que hacer una conversión de gregoriano a juliano, por es menor que la fecha del timestamp.
Al igual que al metodo
diaSemana().
Queria saber como plantiarian esta misma clase algunos de ustedes ya que yo recien estoy empezando y debe tener algunos errores. Tambien alas propiedades que estoy usando adentro de la clase como son $diaSemana, $diasDefault, $fechaActual, ect. Se hacen propiedades publicas?
¡Saludos!