/ / Perl - Converte a data de YEAR-MM-DD para MONTH, DD, YEAR [duplicado] - mysql, sql, perl, date

Perl - Converte a data de YEAR-MM-DD para MONTH, DD, YEAR [duplicado] - mysql, sql, perl, date

Eu estou puxando uma string de um banco de dados que está no formato YEAR-MM-DD, ou seja, 2013-2-24 e precisa ser impresso em uma página da Web no formato de Month, DD, YEAR ou seja, 24 de fevereiro de 2013

Eu tenho que usar perl para fazer isso, mas sou novo no idioma. Até agora eu percebi que preciso converter o número do mês em uma string com algo assim:

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

e extrair dados do banco de dados com:

{Table}->get("date")

Mas eu não sei como colocar tudo isso junto, qualquer ajuda é apreciada.

Eu cheguei a isto: mas não parece funcionar.

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

Talvez esteja falhando por causa do formato no banco de dados? aaaa-mm-dd, traços causariam falha? Preciso convertê-lo em apenas números primeiro ou algo assim?

Respostas:

2 para resposta № 1

Usando 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";

Saídas:

February 24, 2013

1 para resposta № 2

Se você puder usar o DateTime::Format::MySQL módulo da CPAN, sua vida será muito mais fácil, pois é feito sob medida para fazer exatamente o que você está fazendo.

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";

Desde que você é novo em Perl, você deve dar uma olhada no Tarefa :: Kensho lista de módulos. Ele irá dizer-lhe os módulos que a comunidade Perl recomenda para resolver um determinado problema. Você vai ver isso Date::Format caiu em desgraça em favor da DateTime módulo e em DateTime você verá que ele não analisa datas em si, mas possui uma série de módulos para formatar datas sob sua DateTime::Format namespace.