Ejonas GGgg
Ejonas GGgg

Reputation: 476

Error when dealing with old and historical dates in Perl Time::Piece

It seems Time:Piece gives me this error: Error parsing time at /usr/lib/perl5/site_perl/Time/Piece.pm line 481. after the line where I use strptime with some old dates.

My code contains this:

my $ddate = "$month / $day / $year";
my $tmp = Time::Piece->strptime( $ddate, "%m / %d / %Y");

and $$date takes dates from a database using DBI that contains historical and old dates (dates back to the 10th and 9th centuries AD). How can I deal with this if there is any solution?

Upvotes: 1

Views: 165

Answers (1)

ikegami
ikegami

Reputation: 385647

You'll have to use something other than Time::Piece if you want to deal with timestamps before 1970.


If you want to use the Gregorian calendar, you can use DateTime.

If you want to use the Julian calendar, you can use DateTime::Calendar::Julian.

The Gregorian calendar was introduced in September, 1582, and it was used universally by 1918. In between, calendar usage varied by country.

$ perl -MDateTime::Calendar::Julian -E'
   say
      DateTime::Calendar::Julian->new(year => 1013, month => 2, day => 22)
         ->strftime("%a");
'
Sun

Alternatively, Date::Convert looks promising if you're just care about dates (not timestamps).

Upvotes: 4

Related Questions