Doesn't checkdate() do the sanity check for a valid date? On Fri, 2008-03-07 at 10:08 -0600, Richard Lynch wrote: > Something like this, perhaps: > > preg_match('/^((19|20)[0-9]{2})-([0-1]?[0-9])-([0-3]?[0-9])$/', > $input, $date_parts); > var_dump($date_parts); > > This doesn't completely rule out bogus dates such as 2008-02-30 however. > > I think MySQL would just convert that to MAR 1, 2008 anyway... > > But if you want that degree of comparison: > > list(,$year, $month, $day) = $date_parts; > $unix = mktime(1, 0, 0, $month, $day, $year); > list($y, $m, $d) = date('Y-m-d', $unix); > if ($year != $y || $month != $m || $day != $d){ > //handle invalid date input here > } > > If you do all of that (which is really 5 lines of code) you should be > pretty sure it's a correct/valid date. > > On Tue, March 4, 2008 10:12 pm, Larry Brown wrote: > > Thanks, > > > > I ended up doing: > > > > $incomingQuestDatePieces = explode("-", $incomingQuestDate ); > > > > if(checkdate($incomingQuestDatePieces[1],$incomingQuestDatePieces[2], > > $incomingQuestDatePieces[0])) > > { > > return true; > > } > > else > > { > > return false; > > } > > > > > > I was just wondering since a lot of people have to verify correct > > format > > of the date when working with mysql that there might be some built in > > that is faster etc. > > > > Thanks though... > > > > On Wed, 2008-03-05 at 14:34 +1100, Chris wrote: > >> Larry Brown wrote: > >> > Its been a long week already... YYYY-MM-DD. > >> > > >> > On Tue, 2008-03-04 at 20:16 -0500, Larry Brown wrote: > >> >> Does anyone know if there is a builtin function for checking the > >> >> formatting of an incoming date to verify it is YYYY/MM/DD. I > >> know how > >> >> to convert between formats but want a quick way to check an > >> incoming > >> >> variable to ensure it will be handled properly by mysqld. > >> > >> I normally provide dropdown fields for each (except the year which > >> is a > >> text-field) and put it together how I need it. Validate each part > >> separately and you're off and racing. > >> > >> If you accept any date you'll probably have to split it up first but > >> the > >> principles will be the same. > >> > >> > >> $date = '0000-00-00'; > >> // if they didn't use exactly two dashes? invalid > >> if (substr_count($date, '-') !== 2) { > >> die("Invalid date"); > >> } > >> > >> list($year, $month, $day) = explode('-', $date); > >> if (strlen($year) != 4) { > >> die("Invalid year"); > >> } > >> > >> > >> and so on. > >> > > -- > > Larry Brown <larry.brown@xxxxxxxxxxxxxxxxxxxxx> > > > > > > -- > > PHP General Mailing List (http://www.php.net/) > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > -- Larry Brown <larry.brown@xxxxxxxxxxxxxxxxxxxxx> -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php