Funkcja zwraca błędną datę

0

Mam taki problem napisałem skrypt, który zwraca datę dodanie wpisu do bazy danych i teraz jak ten wpis był dodany mniej więcej godzinę temu to zwraca dobrze natomiast jak był dodany ponad godzinę temu to zwraca już błąd teraz pokazuje że był dodany
Wczoraj o godzinie 02 i minucie 36
A prawidłowa data to powinna być był dodany Dzisiaj o godzinie 15 i minucie 7
dam kod źródłowy tej funkcji
funkcja oblicz_date

  public function oblicz_date($data) {
    $czas_obecny = time();
    $czas_dodania = $czas_obecny - $data;
    if ($czas_dodania < 60) $this->data = "Mniej niż minutę temu";
    else if ($czas_dodania < 1900) $this->data = "Około pół godziny temu";
    else if ($czas_dodania < 3600) $this->data = "Godzinę temu";
    else {
	$data2 = date("Y-m-d H:i:s",$czas_dodania);
	$obecna_data = date("Y-m-d H:i:s");
	$data2_podzial = explode(" ",$data2);
	$obecna_data_podzial = explode(" ",$obecna_data);
	
	$data2_podzial2 = explode("-",$data2_podzial[0]);
	$data2_podzial3 = explode(":",$data2_podzial[1]);
	
	$obecna_data_podzial2 = explode("-",$obecna_data_podzial[0]);
	$obecna_data_podzial3 = explode(":",$obecna_data_podzial[1]);
	if ($obecna_data_podzial2[2] == $data2_podzial2[2]) {
	    $this->data = "Dzisiaj o godzinie " . $data2_podzial3[0] . " i minucie " . $data2_podzial3[1];
	}
	else if ($obecna_data_podzial2[2] != $data2_podzial2[2] and $czas_dodania < 80000) {
	    $this->data = "Wczoraj o godzinie " . $data2_podzial3[0] . " i minucie " . $data2_podzial3[1];
	}
	else {
	    $dzien_tyg = date("l",strtotime($data2));
	    $dzien_tygodnia = $this->oblicz_dzien_tygodnia($dzien_tyg);
	    $this->data = $dzien_tygodnia . " o  godzinie " . $data2_podzial3[0] . " i minucie " . $data2_podzial3[1];
	}
    }
  } 

Wywołanie tej funkcji

     $data1 = explode(" ",$uzywki2[2]);
    $data2 = explode("-",$data1[0]);
    $data3 = explode(":",$data1[1]);
    $czas_wziecia = mktime($data3[0],$data3[1],$data3[2],$data2[1],$data2[2],$data2[0]);
    $obiekt_data->oblicz_date($czas_wziecia);

Dodam, że czas w bazie danych jest przechowywany w postaci Y-m-d Hs

0

https://www.php.net/manual/en/function.date-diff.php
a czas w bazie powinieneś przechowywać nie wstringu, a w polu typu timestamp (czy czymś podobnym) i parsować ją dopiero przy wyświetlaniu (w widoku)

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