Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Trabajar con cadenas (https://www.clubdelphi.com/foros/showthread.php?t=713)

judoboy 22-05-2003 10:23:04

Trabajar con cadenas
 
Hola a todos, mi duda es la siguiente, tiene que ver con una duda que os comente hace unos dias sobre fechas y horas.

El asunto es el siguiente yo obtengo la diferencia de horas entre una fecha y me devuelve un resultado de tipo TTime, el que posteriormente lo paso a un string.

Bueno aqui tengo el problema es que, los resultados desde 0 horas a 9 horas los devuelve del asi

9:15:00


Mientras que los que son de 10 horas a 24 horas los devuelve asi

19:25:00


El asunto es que a mi solo me interesa el valor de la hora por eso utilizaba esta función

Código:

  EditHoras.Text:=TimeToStr(horastotal);

  EDitHoras.Text:=Copy(EditHoras.Text,1,2);
  Horas:=StrToInt(EditHoras.Text);

y asi trabajaba con enteros bueno para horas de 10 a 24 funciona bien. El asunto es que para horas de 0 a 9
yo creia que devolvia los resultados de la forma 09:15:00 para lo cual la función me servía.

Pero de esta forma 9:15:00

El resultado es 9: y evidentemente al pasarlo a un string me da un error. Como puedo descartar el segundo carácter si se tratan del caracter ':'

Muchas gracias.

judoboy 22-05-2003 10:24:00

Queria decir al pasarlo a un integer

FRANKER 22-05-2003 10:28:52

Puedes usar la Procedure DecodeTime.
Sacado de la Ayuda de Delphi5:

This example uses a button and two labels on a form. When the user clicks the button, the current date and time are reported in the captions of the two labels.
Código:


procedure TForm1.Button1Click(Sender: TObject);

var
  Present: TDateTime;
  Year, Month, Day, Hour, Min, Sec, MSec: Word;
 begin
  Present:= Now;
  DecodeDate(Present, Year, Month, Day);
  Label1.Caption := 'Today is Day ' + IntToStr(Day) + ' of Month '
    + IntToStr(Month) + ' of Year ' + IntToStr(Year);
  DecodeTime(Present, Hour, Min, Sec, MSec);
  Label2.Caption := 'The time is Minute ' + IntToStr(Min) + ' of Hour '
    + IntToStr(Hour);
end;


JavierB 22-05-2003 12:01:45

Hola, judoboy.

Esto te puede servir:

Cadena:=FormatDateTime('hh:nn:ss',Time);

Saludos,

Mick 23-05-2003 23:50:38

Pasar el valor time que tienes a un string para despues pasarlo a entero es redundante. Haces asi un monton de operaciones de mas.

Una forma mucho mas sencilla y rapida de hacerlo:

NumeroHoras:= Trunc(time * 24 );

Salud2 !!!

bitERROR 24-05-2003 02:01:11

Si mezclamos algunas de estas ideas que te parece ...

NumeroHoras := StrToInt(FormatDateTime('h', Time));

todos los caminos llevan a roma jeje ;)

judoboy 26-05-2003 13:52:15

Gracias a todos


La franja horaria es GMT +2. Ahora son las 18:20:36.

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