Vale, ese formato es el indicado en el RFC 1123, también llamado
HTTP Time.
Se puede hacer de muchas formas. Aquí te pongo dos:
Using perl Syntax Highlighting
#!/usr/bin/perl
#
# Paso de fecha en formato RFC 1123 (HTTP) a fecha MySQL
# Joaquín Ferrero. 20111223 1324
#
use DateTime;
use DateTime::Format::HTTP;
use DateTime::Format::MySQL;
my $dt = DateTime::Format::HTTP->parse_datetime('Mon, 19 Sep 2011 16:01:44 GMT');
print DateTime::Format::MySQL->format_datetime($dt); # 2011-09-19 16:01:44
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Using perl Syntax Highlighting
#!/usr/bin/perl
#
# Paso de fecha en formato RFC 1123 (HTTP) a fecha MySQL
# Joaquín Ferrero. 20111223 1324
#
use HTTP::Date 'parse_date';
my $fecha = "Mon, 19 Sep 2011 16:01:44 GMT";
my $fecha2 = scalar parse_date( $fecha );
$fecha2 =~ s/\D+$//; # quitamos la zona horaria
print $fecha2; # 2011-09-19 16:01:44
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
De esta última versión, hay una variante, usando parse_date() en contexto lista, donde obtenemos todos los componentes de la fecha por separado:
Using perl Syntax Highlighting
#!/usr/bin/perl
#
# Paso de fecha en formato RFC 1123 (HTTP) a fecha MySQL
# Joaquín Ferrero. 20111223 1324
#
use HTTP::Date 'parse_date';
my $fecha = "Mon, 19 Sep 2011 16:01:44 GMT";
my @fecha2 = parse_date( $fecha );
my $fecha2 = sprintf "%02d-%02d-%02d %02d:%02d:%02d", @fecha2[0..5];
print $fecha2; # 2011-09-19 16:01:44
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4