in reply to Re^2: Date::Parse - how to correctly parse dates between 1901 and 1969
in thread Date::Parse - how to correctly parse dates between 1901 and 1969

Hello again eniad,

Well a simple example would answer your question:

#!/usr/bin/perl use strict; use warnings; use Date::Manip; use feature 'say'; my @dates = ( "2018-02-20 00:00:00", "20180220", "02/20/2018", "02/20/18", # interpreted as 1918-02-20 "2018-02-20", "today"); say UnixDate( ParseDate($_), "%Y-%m-%d") for (@dates); __END__ $ perl test.pl 2018-02-20 2018-02-20 2018-02-20 2018-02-20 2018-02-20 2018-02-20

So in conclusion, yes the module can parse all the dates that you provided.

Update: If you want to know which date formats are acceptable from the module read here Date::Manip::Date/VALID DATE FORMATS. On the same link you will find time formats but also date and time formats combined.

Update 2: A minor similar example on how to parse time and print also time zone if you are interested:

#!/usr/bin/perl use strict; use warnings; use Date::Manip; use feature 'say'; my @dates = ( "2018-02-20 00:00:00", "20180220", "02/20/2018", "02/20/18", # interpreted as 1918-02-20 "2018-02-20", "today", # current date "now" # current date with also time ); say UnixDate( ParseDate($_), "%Y-%m-%d %T %Z") for (@dates); __END__ $ perl test.pl in.txt 2018-02-20 00:00:00 CET 2018-02-20 00:00:00 CET 2018-02-20 00:00:00 CET 2018-02-20 00:00:00 CET 2018-02-20 00:00:00 CET 2018-02-20 00:00:00 CET 2018-02-20 18:03:16 CET

Hope this helps, BR.

Seeking for Perl wisdom...on the process of learning...not there...yet!

Replies are listed 'Best First'.
Re^4: Date::Parse - how to correctly parse dates between 1901 and 1969
by eniad (Acolyte) on Feb 20, 2018 at 16:52 UTC

    It even correctly handles the 2-digit year example. Nice!

    I'll take a deeper dive into Date::Manip. Thanks for the example.

Re^4: Date::Parse - how to correctly parse dates between 1901 and 1969
by eniad (Acolyte) on Feb 20, 2018 at 20:23 UTC

    Date::Manip greatly simplified the parsing of the datetimes. See Solution 2 in my answer. Thanks for the help!