Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Programación General (http://www.forosdelweb.com/f14/)
-   -   fechas (http://www.forosdelweb.com/f14/fechas-554221/)

playa 04/02/2008 09:27

fechas
 
Hola

Tengo una aplicación que llama a nuestro proveedor de registro de dominios..

Esto nos sirve para renovar dominios.. De tal forma que el regisrador nos devuelve la fecha de nuevo registro y esta se mete en la base de datos de nustro sistema

El problema es que desde hace un tiempo no nos funciona... Ellos devuelven la fecha pero esta no se mete e la base de datos o lo hace mal..

Lo único qu ehe podido ver es que el formato de fecha de uestra db es año-mes-dia y ellos justo lo mandn al contrario mes-dia-año.

No se si este pueda ser el problema... Pero d ser así ¿como puedo solucionar esto??

Gracias

jferrero 04/02/2008 10:51

Re: fechas
 
Si el proveedor va a dar la fecha en el mismo formato, siempre, entonces, con una expresión regular muy sencilla, se podría traducir a vuestro formato.

playa 04/02/2008 12:58

Re: fechas
 
si, almenos hasta la fecha lo había hecho.

Como puedo hacer para pasar de a-m-d a m-d-a en perl.

Gracias

jferrero 04/02/2008 13:07

Re: fechas
 
Código:

$fecha =~ s/(....)-(..)-(..)/$2-$3-$1/;

playa 05/02/2008 04:32

Re: fechas
 
me temo que algo hago mal, no hay forma no me devuelve valor alguno..

He puesto:

$fecha =~ s/$valoretorno/$2-$3-$1/;

donde $valoretorno es la fecha en el formato que yo la recibo

Y no da ningún resultado

monoswim 05/02/2008 10:05

Re: fechas
 
porque en la regexp de

$fecha =~ s/(....)-(..)-(..)/$2-$3-$1/;

las variables $1 $2 $3 se llenan con lo que devuelven los paréntesis...

o sea que en esa línea ya quedca la fecha bien configurada...

:adios:

playa 05/02/2008 10:21

Re: fechas
 
he conseguido hacer que muestre algún valor al ponerlo entrecomillado:

$fecha ="~ s/$valoretorno/$2-$3-$1/";

Pero lo que da es:

~ s/01-10-2015/--/

que no es lo buscado

playa 05/02/2008 11:03

Re: fechas
 
He probado de esta forma:

$fecha =~ s/$valoretorno/$2-$3-$1/;
$a = $1;
$b = $2;
$c = $3;
$nuevafecha= "$b-$c-$a";

Pero el resultado que obtengo es:

--

Vaya, los 2 guiones, no recoge valor alguno

monoswim 05/02/2008 13:01

Re: fechas
 
prueba así...

$fecha =~ s/(....)-(..)-(..)/$2-$3-$1/;

o

$valoretorno =~ s/(....)-(..)-(..)/$2-$3-$1/;

en que variable tienes la fecha ?

Te recomiendo que entres a www.perlenespanol.com y veas la sección de tutoriales...

:adios:

playa 05/02/2008 15:49

Re: fechas
 
bueno... la cuestión es que el valor de retorno es por ejemplo:

2008-05-05

Con lo que si hago:

$fecha =~ s/$valoretorno/$2-$3-$1/;

realmente lo que estoy poniendo es:

$fecha =~ s/2008-05-05/$2-$3-$1/;

En lugar de:

$fecha =~ s/(2008)-(05)-(05)/$2-$3-$1/;

No se si esos parentesis (..) son necesarios pero claro el valor yo lo recibo así "2008-05-05" y no (2008)-(05)-(05).. Entiendo que ese puede ser el problema..

Lo que no se es como salvarlo

monoswim 06/02/2008 04:45

Re: fechas
 
Los paréntesis solamente cargan en las variables numéricas el valor que haya adentro, o sea, que los paréntesis hacen que $1 sea igual a 2008, $2 contenga 05 y $3 tenga 05...

y no necesitas enviarlo a otra variable, hacé directamente lo que te pusimos

$fecha =~ s/(....)-(..)-(..)/$2-$3-$1/;

que te deja el $fecha como quieres...

Saludos

playa 06/02/2008 05:18

Re: fechas
 
Claro el problema es que yo no recibo la fecha con los parentesis..

Lo qu recibo es 2008-05-05

Entonces, lo que tendría que hacer primero es dividir esa fecha en 3 variables y luego de ahí ya meter las tres variables en esa función...

¿como puedo separar ese valor que recibo en año, día y mes...??

Creo que si es así con eso estará resuelto e problema

monoswim 06/02/2008 07:03

Re: fechas
 
Cita:

Te recomiendo que entres a www.perlenespanol.com y veas la sección de tutoriales...
En serio, te lo recomiento mucho, por ejemplo hay 2 tutoriales que hablan sobre expresiones regulares, que es esto que estamos haciendo...

Los paréntesis son parte de la expresión regular, NO del contenido de la variable !!!

ya sabemos que la fecha no tiene los paréntesis, probalo que te funcionará !!!

si no te gusta esto de las expresiones puedes probar con algo así

my ($ano, $mes, $dia) = split(/-/, $fecha);

y luego haces

my $nuevaFecha = "$mes-$dia-$ano";

así talvés es un poco más intuitivo...

:adios:

playa 06/02/2008 14:12

Re: fechas
 
Gracias, si con esto me está funcionando.

jferrero 07/02/2008 09:51

Re: fechas
 
Código:

$valoretorno = '2008-05-05';
$valoretorno =~ s/(....)-(..)-(..)/$2-$3-$1/;
print $valoretorno;



La zona horaria es GMT -6. Ahora son las 22:08.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.