Jestem tylko hakiem dla początkujących i wiem, że ten kod jest dość długi. Natknąłem się na twoje pytanie, gdy szukałem rozwiązania mojego problemu. Wprowadzam dane do formularza HTML (zbyt leniwe, aby wpisać 4-cyfrowy rok), a następnie zapisywanie do DB i I (z powodów, dla których nie będę was zanudzać), chcę zapisać datę w formacie 4-cyfrowym. Tylko na odwrót od twojego problemu.
Formularz zwraca datę $ (wiem, że nie powinienem używać tego słowa, ale zrobiłem) jako 01/01/01. Ustalam bieżący rok ($ yn) i porównuję go. Bez względu na to, jaki rok upłynie, jeśli data jest w tym stuleciu, stanie się 20XX. Ale jeśli jest mniej niż 100 (w tym stuleciu), jak 89, to wyjdzie 1989. I będzie nadal działać w przyszłości wraz ze zmianą roku. Zawsze dobre przez 100 lat. Mam nadzieję, że to ci pomoże.
// przerwa $ data do dwóch ciągów
$datebegin = substr($date, 0,6);
$dateend = substr($date, 6,2);
// dostać dwie ostatnie cyfry bieżącego roku
$yn=date("y");
// określić Century
if ($dateend > $yn && $dateend < 100)
{
$year2=19;
}
elseif ($dateend <= $yn)
{
$year2=20;
}
// przynieść zarówno łańcuchy z powrotem do jednego
$date = $datebegin . $year2 . $dateend;
Możesz to naprawić przechowując rok w bazie danych z resztą numeru :) – Smuuf
'$ year = '20' + $ result'. – Matthew
Co, jeśli data miałaby miejsce w 1995 roku? do wyświetlania przyszłych dat, myślę, że to nie zadziała. – Rorschach