There are many ways to parse a date, and hopefully you have access to the nicer libraries. However, sometimes you're stuck on a machine that can't use them. (eg. in a PCI DSS / HIPAA production environment)

In that case, you have to write your own parer, hand-crafted to the specific format you're dealing with.

A general approach to doing this is:

Some notes on this:

To convert month-names to month-numbers: