Properly formatted dates (yyyy-mm-dd) can be alphabetically sorted. Just select the first one after sorting.
update:
perl -e ' print ${ [ sort ( split ( ";" => "2003-12-17;2003-12-09;2003-04-03" )) ] }[0] '
| [reply] [d/l] |
While others have already forwarded suggestions on how to approach this problem, I think there is one additional aspect of date parsing and sorting which has been overlooked in the discussion thus far, that being regional formats.
The differences in order of date elements, namely day of the month, month of the year and year, and acceptable element separator can complicate this problem greatly - For example the date '04/03/2002' may be read as 4th of March 2002 or 3rd of April 2002, depending upon region and individual preferences.
For simple date parsing and sorting where all dates are of a known and fixed format, the simple approach of date splitting and sorting - the Schwartzian Transform may be of use in this approach - whereas for more complex sorting, the Date::Manip module should be employed, which is particularly good at parsing dates of indeterminate format.
perl -le 'print+unpack("N",pack("B32","00000000000000000000001000000001"))' | [reply] |
Your question isn't terribly clear, however... dates are always tricky creatures, and I'd advocate a look at Date::Manip or Date::Calc (which is faster, but C based) which will do what I think you want to do, along with almost any other date manipulation you need. | [reply] |