pierwsze. Masz błąd w użyciu funkcji strtotime
zobacz PHP documentation
int strtotime (string $time [, int $now = time() ])
Trzeba zmodyfikować kod przekazać całkowitą timestamp do tej funkcji.
Po drugie. Używasz formatu d.m.Y H: i zawierającego część czasu. Jeśli chcesz porównać tylko daty, musisz usunąć część czasu, np. `$ date = date (" d.m.Y ");` `
Po trzecie. Nie jestem pewien, czy to działa w ten sam sposób dla ciebie, ale mój PHP nie rozumie formatu daty z $timestamp
i zwraca 01.01.1970 02:00 w $match_date
$timestamp = "2014.09.02T13:34";
date('d.m.Y H:i', strtotime($timestamp)) === "01.01.1970 02:00";
Trzeba sprawdzić, czy strtotime($timestamp)
zwraca poprawny łańcuch daty. Jeśli nie, musisz określić format, który jest używany w zmiennej $timestamp
. Można to zrobić przy użyciu jednej z funkcji date_parse_from_format
lub DateTime::createFromFormat
To jest przykład praca:
$timestamp = "2014.09.02T13:34";
$today = new DateTime(); // This object represents current date/time
$today->setTime(0, 0, 0); // reset time part, to prevent partial comparison
$match_date = DateTime::createFromFormat("Y.m.d\\TH:i", $timestamp);
$match_date->setTime(0, 0, 0); // reset time part, to prevent partial comparison
$diff = $today->diff($match_date);
$diffDays = (integer)$diff->format("%R%a"); // Extract days count in interval
switch($diffDays) {
case 0:
echo "//Today";
break;
case -1:
echo "//Yesterday";
break;
case +1:
echo "//Tomorrow";
break;
default:
echo "//Sometime";
}
Jak zdefiniowano '$ timestamp' i gdzie? –
sprawdź datę używając strtotime – Khushboo
Poradziłbym ci, abyś rzucił okiem na ** obiekt ** Datetime .. I najprawdopodobniej twój $ timestamp nie jest poprawnie konwertowany. – Naruto