/ / Perl - Convertir la fecha de AÑO-MM-DD a MES, DD, AÑO [duplicado] - mysql, sql, perl, date

Perl - Convertir la fecha de AÑO-MM-DD a MES, DD, AÑO [duplicado] - mysql, sql, perl, date

Estoy tirando una cadena de una base de datos que está en el formato YEAR-MM-DD, es decir, 2013-2-24 y necesita que se imprima en una página web en el formato de Month, DD, YEAR es decir, 24 de febrero de 2013

Tengo que usar perl para hacer esto, pero soy nuevo en el idioma. Hasta ahora he pensado que necesito convertir el número del mes en una cadena con algo como esto:

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

y extraer datos de la base de datos con:

{Table}->get("date")

Pero no estoy seguro de cómo reunir todo esto, se agradece cualquier ayuda.

He llegado a esto: pero no parece funcionar.

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

¿Tal vez está fallando debido al formato en que se encuentra en la base de datos? aaaa-mm-dd, ¿los guiones causarán que falle? ¿Necesito convertirlo solo en números primero o algo?

Respuestas

2 para la respuesta № 1

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

Productos:

February 24, 2013

1 para la respuesta № 2

Si puedes usar el DateTime::Format::MySQL Módulo de CPAN, su vida será mucho más fácil ya que está hecho a medida para hacer exactamente lo que está haciendo.

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

Ya que eres nuevo en Perl, deberías echar un vistazo a la Tarea :: Kensho lista de módulos Le indicará los módulos que la comunidad de Perl recomienda para abordar un determinado problema. Ya veras eso Date::Format ha caído en desgracia a favor de la DateTime módulo, y en DateTime Verá que no analiza las fechas en sí, pero tiene una gran cantidad de módulos para formatear fechas bajo su DateTime::Format espacio de nombres