This is modeled on Sartak's excellent Date::Extract, a proven and capable module that you can use to extract references to dates and times from otherwise arbitrary text. For example:

"The package will be delivered at 3:15 PM, March 15, 2007, on the dot."

Upon parsing that, you should end up with a DateTime object representing March 15, 2007 at 3:15PM in your timezone.

Date::Extract is designed to try to minimize "false-positives" (ie. detecting things that *aren't* actually dates or times), but at the expense of potentially missing some dates. As its documentation states, "Surprises are not welcome here."

Because I had the opposite need - to find dates in strings even if some were going to be bogus, I created Date::Extract::Surprise which will gladly detect anything that even remotely looks like it could be a date or time.

Bottom line: at least one of the dates this will 'detect' in some text should be what you wanted. It's up to you to figure out which one that is! :-)