Item Description: Powerful date parsing, arithmetic and other manipulation

Review Synopsis: Big module, but worth it for flexible parsing and complex manipulation tasks

Date::Manip is often referred to as a large, monolithic and impractical module. And at almost three times the size of Date::Calc (which is itself referred to as large and monolithic), it is certainly a large module. However, it provides some useful high-level functions, including very flexible parsing capabilities.

The Good

I have found Date::Manip to be useful primarily for its date parsing capabilities. It can parse many different human-readable date specifications. You can say things like:
ParseDate('today at midnight') ParseDate('in 3 weeks') ParseDate('1 year ago') ParseDate('3rd monday in october') ParseDate('3rd monday in october at 5 pm') ParseDate('in 3 hours') ParseDate('december 3, 1970')
and they will all parse correctly. Date::Manip also handles concepts of work days and holidays, date deltas (for example, "in 3 weeks" can be parsed both as a date and as a delta), recurrent events, and named events. From its internal representation, it can output dates in any format you may need.

The documentation is quite extensive and detailed, although it is somewhat confusing in parts.

The Bad

It is a very large module.

The Bottom Line

If you need powerful date parsing capabilities, or other high-level functions (like recurrence, work/holiday days, etc.), Date::Manip is for you. For most other things it may be overkill.