/ / розбір рядка дати в perl - perl, datetime, perl-module

аналіз строку дати в perl-perl, datetime, perl-модуль

Я намагаюся перевірити, чи є змінною $test містить дійсний формат дати, намагаючись зробитипроаналізуйте його з Date :: Manip. Він працює, як очікувалося, коли формат "РРР / ММ / ДД". Якщо я зміню формат на "DD / MM / YYYY" (мій $ test = "20/4/2012"), він не працює належним чином. Я спробував функцію конфігурації для встановлення формату дати у Великобританії, але все-таки не зробив "t робота.

use Date::Manip qw(ParseDate );
my $test="20_4_2012";
#my $test="2012_4_20";

$test =~ s/_///g;

print $test;

$date=ParseDate($test);

if(!$date) {
print "baddate : $daten";
}

else {
print "Guddate: $daten";
}

Відповіді:

1 для відповіді № 1

Це можна зробити за допомогою Time::ParseDate що дозволяє вказати UK в ньому аргументи до функції парсера.

use Time::ParseDate;

my $test="20/4/2012";

$time = parsedate($test, UK => 1);

1 для відповіді № 2

Як виглядав ваш виклик функції конфігурації? Я можу змусити ваш сценарій працювати, додавши це:

Date_Init("DateFormat=non-US");

перед ParseDate. (А також додавання Date_Init до списку імпорту в use)


1 для відповіді № 3

Сподіваємось, ви вже знайшли своє рішення :-)

Але на користь того, хто проходить, шукаючи інструменти для розбору дат для Perl, я настійно рекомендую основний модуль Time::Piece - це шалено добре розробити те, що ви мали на увазі з будь-якого старого рядка дати.

Справжня відповідь на ваше конкретне запитання - звичайно, "це залежить від того, що ви маєте на увазі під собою".