Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Formato fecha servidor (https://www.clubdelphi.com/foros/showthread.php?t=94751)

shoulder 22-06-2020 18:35:20

Formato fecha servidor
 
Hola estoy intentando no me sale, no se porque el formato de fecha del servidor deberia ser 22/06/2020 pero a veces se cambia a 22/6/2020, intente desde el programa con Shortdatetime pero cuando se cambia el setting del servidor me da error me dice invalido 6/2020. No puedo encontrar una forma de chequear si el setting del sevidor es correcto de no ser asi cambiarlo o ahi tambien jugaria el usuario logueado?

Casimiro Notevi 22-06-2020 20:54:48

¿La fecha del servidor? ¿de dónde lo sacas y cómo? ¿qué fecha, la del sistema, de la bios, la que se presenta en pantalla? ¿qué servidor es, de qué tipo, qué sistema operativo? etc. etc. etc.

shoulder 22-06-2020 22:32:02

Hola es un servidor que corre con windows16 me han dicho, el formato de la Bios el setting, no se porque un dia dice 22/06 y otro dia 22/6 y ahi se produce el error.
Gracias.

Casimiro Notevi 23-06-2020 11:14:21

Nadie responde porque no se entiende lo que preguntas.

gatosoft 23-06-2020 14:46:28

Necesitariamos saber por ejemplo si tu programa se ejecuta en el servidor y en alguna parte del código estas trayendo la fecha con una sentencia Now(), por ejemplo... o si por el contrario, se ejecuta en un cliente y a través de alguna función recuperas la fecha del servidor... o si la fecha la consultas a través de un componente de base de datos que consulta dicha fecha.

Un pco de código ayudaría.

shoulder 24-06-2020 18:20:30

Servidor fecha formato
 
Hola es un programa que corre como servicio en el servidor.
Funciona bien pero de repente da error y me doy cuenta si leo la fecha el formato en el servidor no se porque se cambio de 22/06 a 22/6.Para solucionar cuando hago un now pense que con el shortdateformat lo solucionaba pero no es asi. es decir mientras en el formato de fecha de windows se lea 22/06 funciona, pero si cambian el formato de windows el setting (no se porque a veces se cambia) ahi se corta.



Este es el codigo.


Código Delphi [-]


                        ShortDateFormat := 'dd/mm/yyyy';

                        zquery1.Active;
                        zquery1.close;
                        zquery1.SQL.Clear;
                        zquery1.sql.add ('select fecha from  feriado ');
                        zquery1.sql.add ('where fecha = :dia ');
                        zquery1.Params.ParamByName('dia').Value := now;
                        zquery1.active := true;

movorack 24-06-2020 21:13:54

¿De que tipo es el campo feriado.fecha?
¿Haz probado enviando el parámetro día con AsDate o AsDateTime?

gatosoft 24-06-2020 21:59:23

como dice movorack, podrias camniar la linea:

zquery1.Params.ParamByName('dia').Value := now;

por asDate o AsDatetime, y/o truncar la fecha para que no envie hora.

Código Delphi [-]
zquery1.Params.ParamByName('dia').AsDatetime:= Trunc(now);
zquery1.Params.ParamByName('dia').AsDate:= now;

La función no debería fallar asi. Si lo hace, lo que quiere decir que muy probablemente sea lo otro que comenta Movorack: ¿Que formato de fecha tienes en la tabla "feriado"?, si es texto, si vas a tener problemas si no coindicen los formatos.

Y por uñtimo seria bueno ver el mensaje de error, porque tu nos dices que hay un error pero el mensaje nos podria dar una pista.

saludo,

shoulder 26-06-2020 03:39:23

Fecha servidor
 
Hola error es 6/2 not value date o ':' not integer, fui siguiendo estos dias el servicio y lo que no entiendo es durante varios dias funciona y de repente se frena con ese error como marque en el post superior o ahora en las lineas que dejo mas abajo. Pense sera un error de algo nuevo que lee y no es asi porque si abro el servicio de vuelta corre normalmente es como que se le fuera el seteo de la fecha o de la hora del now en algun momento de las pasadas del while. El servicio lo que hace mediante un while a las 10:50 actualiza datos en la BD
Este es el error que detecte tambien en ':' siempre es el now que no le gusta.....en algun momento de los dias trae otro valor a la variable string hora y por consiguiente se frena en la variable integer Impar.. o en el post anterior cuando paso el valor a zquery.



Código Delphi [-]
ShortDateFormat := 'dd/mm/yyyy';
hora := copy(datetimetostr(now()),11,6);

if copy(datetimetostr(now()),13,1) = ':' then
   hora := '0'+  copy(datetimetostr(now()),12,4);
impar := strtoint(copy(hora,6,1));

movorack 26-06-2020 17:10:12

La verdad, no entendí el último mensaje. Pero me queda la duda.

¿De que tipo es el campo feriado.fecha?
¿Haz probado enviando el parámetro día con AsDate o AsDateTime?

y uno mas.

¿Porque extraes la hora de esa manera? Si es para llevarla a algún informe, te recomendaría usar DateTimeToStr

Pero si es para el manejo de la tabla, ahí si como ya han dicho en otros hilos: Usar el tipo de dato adecuado para cada situación.

shoulder 26-06-2020 18:39:41

Fecha servidor
 
Hola extraigo asi porque, si la cifra del ultimo minuto es impar hago una cosa si es par otra. Como podria ser mas claro me doy cuenta que el servicio funciona pero al pasar los dias yo tampoco entiendo porque es como que la variable now pierde su seteo por eso me aparecen los error 6/2 no es valid date (tendria que ser.. 06/2020 o la hora en blanco en el integer. (el campo fecha del post anterior si es date).
Gracias





Código Delphi [-]
ShortDateFormat := 'dd/mm/yyyy';
hora := copy(datetimetostr(now()),11,6);
impar := strtoint(copy(hora,6,1));

movorack 26-06-2020 21:45:26

Para el caso puntual, en lugar de extraerla de la cadena puedes usar MinuteOf para obtener el minuto y Odd para saber si es impar


La franja horaria es GMT +2. Ahora son las 14:33:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi