Podczas korzystania z strotime()
musisz upewnić się, że używasz prawidłowego formatu daty i godziny
. W przeciwnym razie strtotime()
zwróci false
lub daje nieoczekiwaną wartość.
Przyjmuje się, że daty używające formatu XX/XX/XXXX są w formacie US, co oznacza, że pierwsze dwie cyfry reprezentują miesiąc, kolejne dwie cyfry reprezentują dzień miesiąca, a ostatnie cztery cyfry reprezentują rok. W przypadku użycia myślników zakłada się, że daty są w formacie europejskim. Na przykład:
04/18/2017 = April 18, 2017
12/18/2017 = December 18, 2017
18-04-2017 = April 18, 2017
18-12-2017 = December 18, 2017
Jeśli przypadkowo zmienisz dzień i miesiąc strtotime()
zwróci false, ponieważ data jest nieprawidłowa.
18/04/2017 // error
18/12/2017 // error
04-18-2018 // error
12-18-2017 // error
Powyższe przykłady są proste. Ale możesz napotkać problemy, gdy daty mogą być niejednoznaczne. Na przykład:
04/12/2017 = April 12, 2017
12/04/2017 = December 4, 2017
04-12-2017 = December 4, 2017
12-04-2017 = April 12, 2017
W powyższych przykładach zamieniając dzień i miesiąc nadal otrzymujemy prawidłowe daty, które mogą spowodować nieoczekiwane wyniki w Twojej aplikacji. Aby rozwiązać te potencjalne problemy, zaleca się użycie DateTime::createFromFormat()
aby przeanalizować datę, reklama zwraca DateTime()
obiekt, z którego możesz uzyskać Unix Timestamp
, przekonwertuj datę na inny format
lub użyj go do porównania z innymi DateTime
obiekty.
// Parse US date format
$date1 = DateTime::createFromFormat('m/d/Y', '04/18/2017');
// Get Unix timestamp of 1493581268
$timestamp = $date1->getTimestamp();
// Parse European date format
$date2 = DateTime::createFromFormat('d-m-Y', ''18-04-2017);
// Get MySQL format (ISO-8601) of 2017-04-18
$mysqlDate = $date2->format('Y-m-d');
Zobacz też:
W Twoim konkretnym przypadku zadziała następujący kod:
$date = $date1 = DateTime::createFromFormat('m/d/Y', '20/02/2000');
$D->query = $date->format('Y-m-d'); // 2000-02-20