http://www.perlmonks.org?node_id=443644


in reply to Converting to epoch time.

What others have said about splitting up the string with a regex and using Time::Local will work great if all you need is to convert the date to epoch. But if you need to do anything else with the date, then you may want to look at the DateTime modules.

Note: Since your date does not include the timezone, you may need to specify that to the DateTime object if you need it to be in a certain timezone. By default it is parsed into UTC.

Here is an example using DateTime::Format::Strptime with the specified format. This is a good module to use if you know the format for the date. Check the manpage for strftime for information about the format.

use DateTime::Format::Strptime; use strict; my $datetime = "2005-03-28 12:00:00"; my $parser = DateTime::Format::Strptime->new(pattern => '%Y-%m-%d %H +:%M:%S'); my $dt = $parser->parse_datetime($datetime); print $dt->epoch;

And here it is using DateTime::Format::HTTP in case your date can be in many different formats. Check the documentation for the list of the many formats that it knows how to parse.

use DateTime::Format::HTTP; use strict; my $datetime = "2005-03-28 12:00:00"; my $dt = DateTime::Format::HTTP->parse_datetime($datetime); print $dt->epoch;

Hope that this is helpful.