Как преобразовать текстовую дату в метку времени? - PullRequest
16 голосов
/ 11 октября 2011

Как конвертировать дату в текстовом формате:

23.10.2011  11:35:00

к отметке времени?

Ответы [ 3 ]

18 голосов
/ 11 октября 2011

Используя Время :: Местное , вы можете сделать:

use Time::Local;

my $date = '23.10.2011  11:35:00';
my ($mday,$mon,$year,$hour,$min,$sec) = split(/[\s.:]+/, $date);
my $time = timelocal($sec,$min,$hour,$mday,$mon-1,$year);
print $time,"\n",scalar localtime $time;

Выход:

1319362500
Sun Oct 23 11:35:00 2011
16 голосов
/ 11 октября 2011

Я бы посмотрел на DateTime и модули синтаксического анализа .

perl -MDateTime::Format::Strptime -le'$strp = DateTime::Format::Strptime->new( pattern => "%d.%m.%Y  %T", time_zone => "local"); $dt = $strp->parse_datetime("23.10.2011  11:35:00"); print $dt->epoch'
1319384100 at -e line 1.

То же, что и выше, но не однострочный:

use DateTime::Format::Strptime;
my $strp = DateTime::Format::Strptime->new(
   pattern => '%d.%m.%Y  %T',
   time_zone => 'local',
);
my $dt = $strp->parse_datetime('23.10.2011  11:35:00');
print $dt->epoch;
1 голос
/ 30 октября 2018

Вы можете использовать Time :: Piece , основной модуль.Форматы можно найти на странице руководства для strptime .

use Time::Piece;
my $tp = Time::Piece->strptime("23.10.2011  11:35:00", 
                               "%d.%m.%Y  %H:%M:%S");
print $tp->epoch; # 1319369700
print $tp;        # "Sun Oct 23 11:35:00 2011"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...