Как мне конвертировать дату и время в другой формат?[Perl] - PullRequest
1 голос
/ 20 февраля 2011

Нужна помощь в разборе метки даты и времени и разделении ее по дате и времени.

use strict;
use warnings;
use Time::Piece;

my $string = "05:57:03 08/31/10 MDT";

print $string,"\n";

my $time = Time::Piece->strptime($string, "%H:%M:%S");
my $date = Time::Piece->strptime($string, "%Y/%m/%d");

print $time,$date,"\n";

Спасибо! Кроме того, как мне определить, в какой день недели используется код?

Ответы [ 2 ]

7 голосов
/ 20 февраля 2011
use DateTime::Format::Strptime;
my $s  = DateTime::Format::Strptime->new(pattern => '%T %D %Z');
my $dt = $s->parse_datetime('05:57:03 08/31/10 MDT');
say $dt->strftime('%A'); # Tuesday
3 голосов
/ 20 февраля 2011

Вы должны быть в состоянии использовать код, подобный следующему:

my $t = Time::Piece->strptime($string, "%H:%M:%S %m/%d/%y %Z");

Однако, по крайней мере, в моей системе я должен изменить часовой пояс MST на GMT, чтобы он совпадал;если я оставлю это, как в вашем примере, я получу ошибку:

Perl> my $t = Time::Piece->strptime("05:57:03 08/31/10 DST", "%H:%M:%S %m/%d/%y %Z");
[!] Runtime error: Error parsing time at /usr/local/lib/perl/5.10.0/Time/Piece.pm line 469.

Если это работает для вас, у вас будет объект Time :: Piece, для которого вы можете вызвать, например, $t->day_of_week для дня недели в виде числа, $t->day для, например, 'Tue' или $t->fullday для, например, 'Tuesday'.

См. документацию для Time :: Piece подробности о методах, которые вы можете вызвать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...