Cita:
Esta seria la claseCrea 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:
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.
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"; echo 'El mes '.$month.' tiene '.$diaMes.' dia/s'; } public function diasTranscurridos() { $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!