in reply to Date::Manip and date

I prefer DateTime with DateTime::Format::Strptime:

use DateTime; use DateTime::Format::Strptime; my $p = DateTime::Format::Strptime->new(on_error=>'croak', pattern => '%Y-%m-%d'); my $dt = $p->parse_datetime('1988-12-13'); print $dt, " -> ", $dt->epoch, "\n"; __END__ 1988-12-13T00:00:00 -> 597974400

(Maybe slightly overkill in this situation but when parsing date/time formats with times and especially handling time zones it becomes really useful.)

Replies are listed 'Best First'.
Re^2: Date::Manip and date
by SBECK (Chaplain) on Jul 09, 2015 at 17:53 UTC
    Or you can continue to use Date::Manip. The exact equivalent of the DateTime script is:
    use Date::Manip::Date; my $date = new Date::Manip::Date; $date->parse('1988-12-13'); print $date->printf('%O -> %s');
    and Date::Manip handles all time zones just like the DateTime modules.
      Minor correction. It's not exact, in case of DateTime it's 1988-12-13T00:00:00 UTC, and in case of Date::Manip it's local time. It should be:
      $date->parse('1988-12-13 UTC');
      I wonder if it is possible to pass time zone separately from the date.

        Date::Manip always parses dates in the local time zone (unless of course there is a zone attached to the date string), so you're right that my script wasn't exact. My apologies.

        If you want to parse dates in UTC by default, use:

        use Date::Manip::Date; my $date = new Date::Manip::Date; $date->config("setdate","now,UTC"); $date->parse('1988-12-13'); print $date->printf('%O -> %s');
        and that gives the same result as the DateTime script.