/ / Perl дата функция / модул, способен да разбере пълни неограничени месеци - perl, дата, модул

Perl дата функция / модул, който може да разбере пълни несъкратени месеци - perl, date, module

Нека кажем, че чета от низ от някъде товасъдържа дата и форматът на датата не съкращава месеца. Има ли модул, който може да се справи с четенето му и след това да го изведе в избрания от мен формат? Бързо погледнах през CPAN и всеки модул за дата, който разгледах, изглежда не може да побере несъкратен месец.

Благодаря за всяка помощ

РЕДАКТИРАНЕ: Като пример кажете, че имаме низ като този; „2 февруари 1988 г.“. Сега искаме да го преобразуваме в "1988-02-02" (ГГГГ-ММ-DD).

Отговори:

4 за отговор № 1

Използвайки DateTimeX::Easy:

програма

my $dt = DateTimeX::Easy->new("2 February 1988");
print $dt->date();

продукция

1988-02-02

6 за отговор № 2

Можете да използвате ядрото Време :: Piece модул и неговото strptime метод. Форматът е описан на страница на strftime man, за пълномесечно име има %B спецификатор на формата:

use Time::Piece;
my $dt = Time::Piece->strptime("2 February 1988", "%d %B %Y");
print $dt->ymd,"n";

1 за отговор № 3

Винаги използвам Date :: Parse, тъй като той може автоматично да открие входния формат и да го конвертира в unix време с "str2time". Ако след това искам да форматирам датата, използвам "strftime".

use Date::Parse;
use POSIX "strftime";

$unix_time = str2time "2 February 1988";
print strftime "%Y-%m-%d", localtime $unix_time;

-1 за отговор № 4

Трябва да напишете свой собствен модул за преобразуване.

Можете да използвате хешове, за да направите бързи преобразувания по следния начин:

моят% месец = ("януари" => "01", "Feb" => "02", "Март" => "03", "Април" => "04", "Май" => "05", "Jun" => "06", "Юли" => "07", "Август" => "08", "Септември" => "09", "Oct" => "10", "Ноември" => "11", "Dec" => "12");

my% day = ("Sun" => "01", "Понеделник" => "02", "Вторник" => "03", "Wen" => "04", "Чет" => "05", "Fri" => "06", "Сб" => "07");