Jak porównać dwie daty w php, jeśli daty są w formacie '03_01_12'
i '31_12_11'
.
Używam tego kodu:
$date1=date('d_m_y');
$date2='31_12_11';
if(strtotime($date1) < strtotime($date2))
echo '1 is small ='.strtotime($date1).','.$date1;
else
echo '2 is small ='.strtotime($date2).','.$date2;
Ale to nie działa.
Odpowiedzi:
Będziesz musiał upewnić się, że podane daty są prawidłowymi obiektami dat.
Spróbuj tego:
Następnie możesz wykonać tę
strtotime()
metodę, aby uzyskać różnicę.źródło
Korzystanie z DateTime :: createFromFormat :
źródło
;, :, (, ), /, ., ,, -
będzie działał każdy z obsługiwanych separatorów .Funkcja date_diff () zwraca różnicę między dwoma obiektami DateTime.
Jeśli pierwsza data wypada przed drugą datą, zwrócona zostanie dodatnia liczba dni; w przeciwnym razie ujemna liczba dni:
dane wyjściowe to „+272 dni”;
zmiana $ date1 = "2014-03-15"
Wynik wyniesie „-93 dni”
źródło
źródło
Nie odpowiadam na rzeczywisty problem PO, ale odpowiadam tylko na tytuł. Ponieważ jest to najlepszy wynik dla „porównywania dat w php”.
Całkiem proste w użyciu obiektów Datetime (
php >= 5.3.0
) i ich bezpośredniego porównywaniaźródło
Rozszerzając odpowiedź @ nevermind, można użyć DateTime :: createFromFormat: like,
źródło
możesz spróbować czegoś takiego:
Następnie możesz uzyskać dostęp do różnicy w dniach, takich jak ten $ dateDiff-> d;
źródło
Nie wiem, w czym masz problem, ale:
źródło
Spróbuj tego
źródło
porównaj wynik
maketime()
dla każdego czasuźródło
Wiem, że to późno, ale na przyszłość umieść format daty w rozpoznawalnym formacie za pomocą str_replace, a wtedy twoja funkcja będzie działać. (zastąp podkreślenie myślnikiem)
źródło
Możesz przekonwertować na liczbę całkowitą i porównać.
Na przykład.:
źródło
Myślę, że to bardzo prosta funkcja
źródło
Chłopaki, proszę, nie czyńcie tego tak skomplikowanym. Poniżej znajduje się prosta odpowiedź
Właśnie dodałem dwa kolejne wiersze z Twoim kodem
źródło
Jeśli obie daty mają ten sam format, użyj operatora porównania.
Dane wyjściowe: 2018-05-05 jest starsze niż 2019-08-19
źródło