ugrás a tartalomhoz

Dátum ellenőrzés és konvertálás

halee · 2007. Jan. 10. (Sze), 14.27
Sziasztok!


A következő problémával találkoztam. Adott egy dátum nap/hónap/év formátumban.
Nekem ebből a később a YYYY-mm-dd mysql-es formátum kell.

Tehát át kell alakítanom a formátumot és ellenőrizni, hogy az egy létező dátum-e. Ezzel nem is lenne probléma, mert mktime-al átalakítom, és checkdate-el ellenőrzöm, viszont az mktime például a 32/01/2007 bemenetre 2007-02-01-et ad vissza.

Van erre a problémára valami közvetlen megoldás, vagy darabolnom kell a dátumot és úgy átadni a checkdate-nek??

köszi,
Halee
 
1

Strtotime

kicsy · 2007. Jan. 10. (Sze), 15.45
Strtotime-mal UNIX időbélyeggé tudod alakítani a dátumod, majd ebből könnyedén kinyerheted a checkdate-nek az évet, hónapot, napot date függvénnyel.
2

ez is rosszat ad vissza

Bitman · 2007. Jan. 10. (Sze), 16.52
Ezt kiváncsiságból én is kipróbáltam, de a strtotime rossz eredménnyel tér vissza, utána meg unix timeból csak korrekt időpontot tudsz előállítani. SZERINTEM ezzel a módszerrel nem lehetséges ellenőrizni.
$datum = "32/01/2007";
$time = strtotime("$datum");
echo date("Y-m-d", $time);
Kimenet: 2009-08-01

Ha pedig a darabolós megoldáson kivül nem születik más, akkor itt van:
$datum = "32/01/2007";
$darab = explode("/", $datum);
if (checkdate($darab['1'], $darab['0'], $darab['2'])) {
	echo"jó a dátum";
}
3

Igaz

kicsy · 2007. Jan. 11. (Cs), 01.23
Rossz eredményt ad vissza, mivel a strtotime - mint ahogy minden más is - hónap/nap/év formátumot vár. De igazad van, ha átalakítja unix időbélyeggé onnantól kezdve értelmetlen a checkdate, mert mindenképp helyes dátum lesz, erre nem is gondoltam.
(Bár igazából már az eredeti kérdés problémás, hiszen az mktime nem eszi a "32/01/2007", vagy bármi más string típusú dátumot, tehát már itt darabolni kell. (No meg nem 2007-02-01-et ad vissza, hanem unix timestampet.))
Szóval jó darabolást :)
4

köszi

halee · 2007. Jan. 11. (Cs), 11.16
Köszi a válaszokat.
Én is pont így csináltam, ahogy írod, csak ennél akartam egy szebb/jobb megoldást.