• Publicidad

Convertir una fecha Excel tipo Abril 05/2013 a yyyy-mm-dd

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Convertir una fecha Excel tipo Abril 05/2013 a yyyy-mm-dd

Notapor coltx » 2013-12-16 07:41 @361

Estimados, tengo la siguiente duda y es que desde un Excel estoy leyendo un campo fecha que está de la siguiente manera "April 05/2013" el tema es que cómo puedo transformar esa fecha a "yyyy-mm-dd" para poder insertarla en la BD.

Gracias por su ayuda.
coltx
Perlero nuevo
Perlero nuevo
 
Mensajes: 79
Registrado: 2011-09-16 08:01 @376

Publicidad

Re: Convertir una fecha del tipo Abril 05/2013 a yyyy-mm-dd

Notapor Aceitunas » 2013-12-16 08:07 @380

Con expresiones regulares:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. my $Fecha = "April 05/2013";
  4.  
  5. $Fecha =~ /(.+?)\s(\d+)\/(\d+)/;
  6.  
  7. my $NuevaFecha = "$3-$1-$2";
  8.  
  9. print "$NuevaFecha\n";
  10.  
  11.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Voy a llegar hasta el final, voy a subir la velocidad - Migue Benítez.
Aceitunas
Perlero nuevo
Perlero nuevo
 
Mensajes: 117
Registrado: 2013-11-07 15:25 @684
Ubicación: Ciudad Real, España.

Re: Convertir una fecha Excel tipo Abril 05/2013 a yyyy-mm-d

Notapor explorer » 2013-12-16 15:02 @668

Excel guarda las fechas como el número de días que han pasado desde 1900.

Con el módulo DateTime::Format::Excel se puede hacer fácil la conversión de un formato a otro.

Por estos foros lo hemos comentado bastante veces.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Convertir una fecha Excel tipo Abril 05/2013 a yyyy-mm-d

Notapor coltx » 2013-12-26 13:47 @616

Ahora, estimado, ¿cómo puedo tomar el valor que hay en la celda donde supuestamente está la fecha? ¿y luego formatearla al formato que necesite? Gracias.
coltx
Perlero nuevo
Perlero nuevo
 
Mensajes: 79
Registrado: 2011-09-16 08:01 @376

Re: Convertir una fecha Excel tipo Abril 05/2013 a yyyy-mm-d

Notapor explorer » 2013-12-26 15:34 @690

Por estos foros hemos visto ejemplos de cómo leer celdas. Usa el sistema de búsqueda.

Yo uso Spreadsheet::Read. En el enlace que te puesto antes, se comenta también Spreadsheet::ParseExcel.

Yo uso Spreadsheet::Read porque se encarga de hacer las transformaciones de forma automática.

Un ejemplo. Tengo un archivo Excel que se llama Contabilidad2003.xls. En la celda C4 hay una fecha. La puedo recuperar con el siguiente código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use v5.10;
  3. use Spreadsheet::Read;
  4.  
  5. $libro = ReadData("Contabilidad2003.xls");
  6.  
  7. say $libro->[1]{C4};                       # 10/02/03 Celda C4 de la primera hoja del libro Excel, formateado
  8. say $libro->[1]{cell}[3][4];               # 37662    Lo mismo, pero no formateado.
  9.  
  10. use DateTime;
  11. $dt = DateTime->new(                       # origen de fechas Excel, en Windows (no en Mac, que es otro)
  12.           year  => 1899,
  13.           month => 12,
  14.           day   => 30,
  15. );
  16.  
  17. $dt->add(days => $libro->[1]{cell}[3][4]); # le sumamos los días indicados en la celda
  18.  
  19. say $dt->dmy("/");                         # 10/02/2003 Salida formateada como yo quiero
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Naturalmente, las últimas líneas son las que te ahorra el módulo DateTime::Format::Excel.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados

cron