Wyświetlanie najbliższego wydarzenia

0

Potrzebuję wyświetlić najbliższe wydarzenie w danym dniu i godzinie.

Np. Mam 3 eventy w tygodniu.

Event 1
Poniedziałek - 11:00, 18:00
Środa - 15:00, 20:00

Event 2 i 3 tak samo..

Jak najlepiej to zrobić?
Stworzyć zmienną w której będą eventy i następnie dni, godziny?

$events = [
  [
    'name' => 'Event 1',
    'schedule' => [
      'monday' => [
        '11:00',
        '18:00',
      ],
    ],
  ]
];

Czy może pogrupować to według dni?

No i jak sama część kodu wybierająca najbliższy event ma wyglądać? Nie bardzo mam pomysł jak się za to zabrać, a to niby takie proste.

1

Wystarczy uzyc IntlCalendar
Reszta funkcji z tej klasy: https://www.php.net/manual/en/indexes.functions.php

np .

class DateAndTime extends IntlGregorianCalendar
{
    public static function calendar(){
        $cal[0] = new IntlGregorianCalendar(2012, 0, 31);
        $cal[1] = new IntlGregorianCalendar(2013, 0, 31);
           $inReturn= intlcal_after($cal[0], $cal[1]);
           if($inReturn){
               echo "Czas 1 jest przed czasem 2";
           }else{
               echo "Czas 2 jest przed czasem 1";
           }
}
}

DateAndTime::calendar();

jeśli chodzi o godziny, ja bym zrobil w ten sposob

public static function hour($eventTime){
    $time = date('H:i',time() + 3600);
    $duration = $time / 1000;
    $hours = floor($duration / 3600);
    $minutes = floor(($duration / 60) % 60);

i na zasadzie switch/if przyrownywal i ustalal kolejnosc wyswietlania etc. zalezy co budujesz

1

Jeszcze ewentualnie mozna samemu sobie zbudowac takie porownania np. godziny

<?php
$eventTime= "13:55";
new MyCalendar($eventTime);
class MyCalendar{
    public $dataArray;
    public $hour, $minutes;
    public function __construct($eventTime){
        $this->dataArray[0] = $eventTime;
        $this->compare();
    }
    public function  compare(){
              $this->hour= intval(substr($this->dataArray[0], 0, 2));
              $this->minutes= intval(substr($this->dataArray[0], 3, 2));
             echo "czas eventu \n".$this->hour.$this->minutes."\n";
              $this->hourNow = intval(substr(strval(date('H:i',time())), 0, 2));
              $this->minutesNow= intval(substr(strval(date('H:i',time())), 3, 2));
             echo "czas teraz \n".$this->hourNow.$this->minutesNow."\n";
               if($this->hour>$this->hourNow){
                   echo "Czas szybszy".$this->hour.$this->minutes;
               }else if($this->hour==$this->hourNow){
                   if($this->minutes>$this->minutesNow){
                       echo "Czas szybszy".$this->hour.$this->minutes;
                   }}

               else  {
                   if($this->hourNow<10){
                       $this->hourNow = "0".strval($this->hourNow);
                   }
                   if($this->minutesNow<10){
                       $this->minutesNow = "0".strval($this->minutesNow);
                   }
                   echo "Czas szybszy".$this->hourNow.$this->minutesNow;
               }
    }}
?>

1 użytkowników online, w tym zalogowanych: 0, gości: 1