in reply to How to check the valid date using Time::Piece module?

If you happen to be dealing only with dates "since the epoch", you can convert the "untrusted" date string to seconds since the epoch, then convert back to a date string of the same format.

A variety modules (e.g. Time::Local) can be used convert from "month, day, year" (and "hour, minute") values to seconds since the epoch (i.e. "unix seconds"), and they can be fairly tolerant about numeric values that are out-of-range (e.g. a day value of 32, or Feb. 30, or an hour value of 26).

But when converting from seconds back to month, day, year, hour, minute (e.g. using localtime), you will always get a valid date. So if the input string does not match the output string, the input must have been invalid in some way.

  • Comment on Re: How to check the valid date using Time::Piece module?