Użyj strtotime()
pierwszej randki, a następnie date('Y-m-d')
przekonwertuj ją z powrotem:
$time = strtotime('10/16/2003');
$newformat = date('Y-m-d',$time);
echo $newformat;
// 2003-10-16
Zwróć uwagę, że istnieje różnica między używaniem ukośnika /
i łącznika -
w strtotime()
funkcji. Cytat z php.net:
Daty w formatach m / d / r lub dmy są jednoznaczne, patrząc na separator między różnymi składnikami: jeśli separator jest ukośnikiem (/), to zakłada się amerykański m / d / r; podczas gdy jeśli separatorem jest myślnik (-) lub kropka (.), wówczas przyjmuje się europejski format dmy.
Aby uniknąć potencjalnej niejednoznaczności, najlepiej stosować daty ISO 8601 (RRRR-MM-DD) lub DateTime :: createFromFormat (), jeśli to możliwe.
strtotime
akceptuje niektóre formaty. Nie możesz tego nic karmić. DlategoDateTime::createFromFormat
należy go używać zamiaststrtotime
. Niestety, ta odpowiedź ma zbyt wiele pozytywnych opinii, aby ktokolwiek mógł na nią zwrócić uwagę. Teraz wszystko kopiuje się.Należy zachować ostrożność w przypadku formatów m / d / Y i mdY. PHP uważa,
/
że oznacza m / d / Y i-
dmY. W tym przypadku wyraźnie opisałbym format wejściowy:W ten sposób nie jesteś kaprysem określonej interpretacji.
źródło
strtotime()
funkcji.Aby przeanalizować datę, należy użyć: DateTime :: createFromFormat ();
Dawny:
Jednak ostrożnie, ponieważ spowoduje to awarię:
Musisz sprawdzić, czy formatowanie poszło dobrze, najpierw:
Teraz zamiast upaść, otrzymasz wyjątek, który możesz złapać, propagować itp.
$ dateDE ma niewłaściwy format, powinien być „16.10.2013”;
źródło
Edycja: możesz także przekazać konstruktorowi DateTimeZone do DateTime (), aby zapewnić utworzenie daty dla żądanej strefy czasowej, a nie domyślnej strefy serwera.
źródło
Na pierwszą randkę
Na nową datę
źródło
Jeśli masz format dd-mm-rrrr, to w PHP nie będzie działać zgodnie z oczekiwaniami. W dokumencie PHP mają poniższe wytyczne.
Więc po prostu nie możesz używać, jak chcesz. Kiedy spróbujesz użyć formatu dd / mm / rrrr, usuniesz FAŁSZ. Możesz dostosować za pomocą następujących elementów.
źródło
Jakbyśmy mieli datę „07 / maj / 2018” i potrzebujemy daty „2018-05-07” jako zgodnej z mysql
Mi to pasuje. cieszyć się :)
źródło
Ponieważ nikt o tym nie wspominał, oto inny sposób:
$date = date_create_from_format("m-d-Y", "10-16-2003")->format("Y-m-d");
źródło
Jeśli chcesz akceptować daty przy użyciu amerykańskiego porządku (miesiąc, data, rok) dla formatów w stylu europejskim (używając myślnika lub kropki jako dnia, miesiąca, roku), jednocześnie akceptując inne formaty , możesz przedłużyć klasę DateTime:
Lub możesz utworzyć funkcję, która będzie akceptować mdY i wyświetlać Ymd:
źródło
aby utworzyć datę z dowolnego łańcucha, użyj:
$ date = DateTime :: createFromFormat ('dmy H: i', '01 -01-01 01:00 '); echo $ date-> format („Ymd H: i”);
źródło