Я витягую рядок із бази даних у форматі 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
простір імен