/ / Perl - Перетворити дату з YEAR-MM-DD в MONTH, DD, YEAR [дублікат] - mysql, sql, perl, date

Perl - Перетворення дати з YEAR-MM-DD на MONTH, DD, YEAR [дубль] - mysql, sql, perl, date

Я витягую рядок із бази даних у форматі YEAR-MM-DD, тобто 2013-2-24, і його потрібно надрукувати на веб-сторінці у форматі Month, DD, YEAR тобто 24 лютого 2013 р

Я повинен використовувати perl для цього, але я новачок у мові. Наразі я зрозумів, що мені потрібно перетворити число місяця у рядок приблизно таким чином:

 my @months = ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")

і витягніть дані з бази даних за допомогою:

{Table}->get("date")

Але я не знаю, як це все скласти, будь-яка допомога буде вдячна.

Я дійшов до цього: але, здається, це не працює.

use Date::Format;
@date = {Table}->get("date")
$date->time2str("%B %d %Y", @date);
print date;

Можливо, це не вдається через формат, в якому він знаходиться в базі даних? рррр-мм-дд, чи не будуть риски спричинити збій? Чи потрібно спочатку перетворити його лише на числа чи щось інше?

Відповіді:

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

Використовуючи Time::Piece:

use strict;
use warnings;

use Time::Piece;

my $date = "2013-2-24";

print Time::Piece->strptime($date, "%Y-%m-%d")->strftime("%B %d, %Y"), "n";

Виходи:

February 24, 2013

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

Якщо ви можете використовувати DateTime::Format::MySQL модуль від CPAN, ваше життя стане набагато простішим, оскільки це на замовлення робити саме те, що ви робите.

use DateTime::Format::MySQL;
my $date_from_database_table =  "2013-2-24";
my $dt = DateTime::Format::MySQL->parse_datetime($date_from_database_table);
print join(",",  $dt->month_name(), $dt->day, $dt->year) ."n";

Оскільки ви новачок у Perl, вам слід поглянути на Завдання :: Кеншо список модулів. Він розповість вам, які модулі рекомендує спільнота Perl для вирішення певної проблеми. Ви це побачите Date::Format впав у немилість на користь DateTime модуль, і в DateTime Ви побачите, що він сам не розбирає дати, але має цілу низку модулів для форматування дат під ним DateTime::Format простір імен