Salve galera, alguém consegue pensar num jeito melhor de fazer isso? O sorteio da Loteria Nacional da Irlanda acontece duas vezes por semana na quarta-feira e um sábado às 20 horas. Escreva uma função ou classe que calcula e retorna a próxima data do sorteio válido com base na data e hora atual e também em uma data e hora opcionalmente fornecida.
class IrishLottery
{
private $now;
private $wednesday;
private $saturday;
public function __construct($optionalDate = null)
{
try {
$this->now = new DateTime($optionalDate);
$currentDay = clone $this->now;
$this->wednesday = clone $this->now;
$this->saturday = clone $this->now;
$currentDay->modify('this day 20:00');
$ordinal = $this->now <= $currentDay ? 'this' : 'next';
$this->wednesday->modify($ordinal . ' wednesday 20:00');
$this->saturday->modify($ordinal . ' saturday 20:00');
} catch (Exception $e) {
die($e->getMessage());
}
}
public function getNextDraw()
{
return $this->wednesday < $this->saturday ? $this->wednesday : $this->saturday;
}
}