Вы можете использовать libdatetime-format-flexible-perl
.
#!/usr/bin/perl
use DateTime::Format::Flexible;
my $date_str = "So 22 Dez 2013 07:29:35 CET";
$parser = DateTime::Format::Flexible->new;
my $date = $parser->parse_datetime($date_str);
print $date
Выход по умолчанию будет 2013-12-22T07:29:35
, но поскольку $date
не является регулярной строкой, а объектом, вы можете сделать что-то вроде этого:
printf '%02d.%02d.%d', $date->day, $date->month, $date->year;
Также поведение date
, вероятно, следует рассматривать как ошибку. Я так думаю, потому что дата в том же формате, но по-русски правильно разбирается.
$ export LC_TIME=ru_RU.UTF-8
$ NOW="$(date "+%c")"
$ date --date="$NOW" '+%d.%m.%Y'
22.12.2013