Pascal/Turbo Pascal - Fecha incorrecta

 
Vista:

Fecha incorrecta

Publicado por lupe (4 intervenciones) el 07/09/2007 22:50:09
Tengo un pequeño problema con el resultado de la fecha , antes me mostraba los dos últimos dígitos del año (07), pero ahora me muestra los dos primeros (20). El único cambio que puede afectarle ha sido el cambio de Office 2000 por 2003. ¿Alguien conoce un truquillo para corregir este error?. Gracias mil
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Fecha incorrecta

Publicado por juan (83 intervenciones) el 07/09/2007 23:01:36
Hola Guadalupe Orto, como andas, mira, el tema es así,

si vos tenes una fecha de formato AAAAMMDD, si queres sacar el año haces:

Año:=Fecha div 10000;

Mes:=(Fecha mod 10000) div 100;

Dia:=Fecha mod 100;

y eso es todo, espero haberto podido ayudar, un saludo y que me perdone Diego "religión" Romero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Fecha incorrecta

Publicado por Alexis (44 intervenciones) el 08/09/2007 21:06:55
Buenas tardes, lo que dice juan es muy cierto esa es la manera de obtener el año, el mes y el dia pero ¿Cuando llamas a GetDate () la fecha esta en ese formato?
Hasta donde yo tengo entendido deberia ser algo asi como GetDate (d,m,a) no en el formato anterior...en la ayuda de pascal hay un buen ejemplo de eso...Por otra parte no creo que la actualizacion del office afecte a el programa tal vez sea otro error
Exito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Fecha incorrecta

Publicado por Lupe (4 intervenciones) el 08/09/2007 22:36:18
Hola a todos; la verdad es que el formato de fecha que me he encontrado inscrito es totalmente diferente, no me explico como funciona. En Type aparece nombrado FECHA:string[6]; después FECHA:=LR.FECHA; y en begin aparece:
FF:=copy(linea,PyC[11]+3,8);
DELETE(FF,POS('/',FF),1);
DELETE(FF,POS('/',FF),1);
FECHA:=FF;
DELETE(FECHA,POS(' ',FECHA),1);
IF LENGTH(FECHA)=5 THEN FECHA:=CONCAT('0',FECHA);
end;
Os suena algo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Fecha incorrecta

Publicado por Diego Romero (996 intervenciones) el 09/09/2007 07:51:23
En tu pregunta original dices "antes me mostraba..." ¿a qué te refieres con esto?. Da la impresión de que tienes un programa que no has hecho tú y de alguna manera lo estás modificando.

Si bien es cierto que la fecha del sistema (es decir la fecha actual de la PC donde se ejecuta el programa) se toma usando el procedimiento GetDate(); luego de haber declarado la unidad Dos en la lista de uses, la pregunta que sige es ¿en qué formato quieres trabajar la fecha luego?.

Por el código que has posteado ahora parece que trabajas la fecha en formato calendario corto: DDMMAA (día, mes y año a dos cifras).

Pero tampoco queda claro si esa fecha la tomas del sistema o de alguna otra parte. Si es de alguna otra parte dinos de dónde y qué formato tiene originalmente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Fecha incorrecta

Publicado por Lupe (4 intervenciones) el 09/09/2007 22:51:41
Tienes razón, el programa me lo he "encontrado" en mi trabajo donde hace años que lo tienen. Pero las últimas remesas han salido con la fecha cambiada, de ahí que intente repararlo y lo que conozco es el VB, no el Pascal.

Si puedes ayudarme te lo agradeceré eternamente, pues he probado varias opciones, pero al compilarlo fallan. La verdad creo que el error es del propio usuario del programa, quien me ha contado lo que le pasa.

En el resultado final, siempre ha generado DD/MM/AA. El código dice:
FECHA:=LR.FECHA;

y en el procedimiento final se le pide:

FF:=copy(linea,PyC[11]+3,8);
DELETE(FF,POS('/',FF),1);
DELETE(FF,POS('/',FF),1);
FECHA:=FF;
DELETE(FECHA,POS(' ',FECHA),1);
IF LENGTH(FECHA)=5 THEN FECHA:=CONCAT('0',FECHA);

donde linea:string;
PyC:array [1..16] of integer;

dando como resultado:

;01/09/07 0:00:00

Que opinais, error humano?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Fecha incorrecta

Publicado por Juan (83 intervenciones) el 11/09/2007 00:15:55
Una aclaración Lupe, el procedimiento GetDate usa 4 parámetros y no 3 como dijeron anteriormente, utilizas GetDate(Anio, Mes,Dia,Día De la semana) en dia de la semana empieza a contar de 0 a 6, siendo 0 domingo y 6 sabado, y las variables las declaras vos misma para luego pasarselas al procedimiento GetDate y almacenar por separado los diferentes valores( si queres juntarlo todo en uno podes usar la formulita que te pase antes y te va a quedar un número de formato AAAAMMDD o como quieras hacerlo) . Te dejo un ejemplo de la utilización del procedimiento GetDate:

program fecha_y_hora;
uses crt,dos;

var
anio,mes,dia,diasemana,
hora,minuto,segundo,centesima:word;
dias:string;

begin
clrscr;
gettime(hora,minuto,segundo,centesima);
getdate(anio,mes,dia,diasemana);
writeln('la hora actual es: ', hora,':',minuto,':',segundo,':', centesima);

case diasemana of
0:dias:=Domingo;
1:dias:=Lunes;
2:dias:=Martes;
3:dias:=Miercoles;
4:dias:=Jueves;
5:dias:=Viernes;
6:dias:=Sabado;
end;

writeln('Hoy es ',dias,' ',dia,'/',mes,'/',anio);
readkey;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Fecha incorrecta

Publicado por Juan (83 intervenciones) el 11/09/2007 00:17:51
Me olvide de decirte que los parametros del procedimiento GetDate tienen que ser si o si de tipo WORD. Espero que te sirva, un saludo. Juan
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Fecha incorrecta

Publicado por Lupe (4 intervenciones) el 11/09/2007 10:19:32
Hola Juan, cualquier consejo es tomado como una ayuda de gran valor.
El programa está instalado en varias unidades, y funciona bien en todas excepto en una, en la cual el cambio es el Office. Ayer estuve comparando el código en todas las unidades, y sorprendentemente es idéntico en todas. Ahora mismo estoy probando a instalar el Office en una de las unidades buenas y si mas tarde, al ejecutarlo cambia los dígitos, entonces habrá que remodelar el programa en todas las unidades, pues el office 2000 se queda algo atrasado.
Gracias por vuestra paciencia y tiempo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar