В данном случае самое простое решение (как уже указывал simbabque) - просто обрабатывать дату как строку.Помимо решения substr()
, которое вы получили, вы можете использовать регулярное выражение для удаления буквы "T" и всего, что за ним следует.
$date =~ s/T.*$//;
Если вы действительно хотите проанализировать и переформатировать дату,затем Time :: Piece был включен в стандартный дистрибутив Perl с 2007 года.
use Time::Piece;
$date = '2019-02-28T08:42:57+0000';
my $tp = Time::Piece->strptime($date, '%Y-%m-%dT%H:%M:%S%z');
say $tp->strftime('%Y-%m-%d');
Для более сложной обработки даты и времени (здесь не требуется, но я включаю ее дляполнота) вы должны прочитать для DateTime и его друзей.
use DateTime;
use DateTime::Format::Strptime;
my $parser = DateTime::Format::Strptime->new(
pattern => '%Y-%m-%dT%H:%M:%S%z',
);
my $date = '2019-02-28T08:42:57+0000';
my $dt = $parser->parse_datetime($date);
say $dt->strftime('%Y/%m/%d');