Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-03-2010
gcc32 gcc32 is offline
Registrado
 
Registrado: ene 2009
Posts: 9
Poder: 0
gcc32 Va por buen camino
Cambiar TimetoStr y viceversa

Hola necesito que teniendo la hora actual con la funcion now; me la transforme a una variable de tipo string o integer, tengo entendido que se hace

var a:TTIME;

begin
a:=now;
label1:=TimetoStr(a);

end;

No me deja compilar, ¿alguien sabe por que? ¿Se necesita algo en uses para realizar este tipo de cambio de variable??

Muchas Gracias
Responder Con Cita
  #2  
Antiguo 24-03-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Now devuelve la fecha y la hora, no la hora solamente, por lo tanto tienes que declarar una variable del tipo DateTime.

Var
x:TdateTime;

Pero para seguir con lo que tu quieres más fácil sería:

Código Delphi [-]
a:=Time;
        label1:=TimetoStr(a);

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 24-03-2010
gcc32 gcc32 is offline
Registrado
 
Registrado: ene 2009
Posts: 9
Poder: 0
gcc32 Va por buen camino
No resuelve pero gracias

Me sigue saliendo el mismo error cuando ejecuto;

Código Delphi [-]
var s:string;
    hora2:Ttime;

begin
    hora2:=Time;
    s:=TimeToStr(time);   <<---- Se me situa el cursor (|Time)
end;

[Error] Principal.pas(136): Missing operator or semicolon

Me da igual como se haga, la idea es cambiar de formato hora a string o integer para poder operar con horas...

Gracias de todas maneras
Responder Con Cita
  #4  
Antiguo 24-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Es que te estás olvidando de poner el dato en la propiedad Caption del label.
Código Delphi [-]
Label1.Caption:=TimeToStr(Now);
Saludos!
Responder Con Cita
  #5  
Antiguo 24-03-2010
gcc32 gcc32 is offline
Registrado
 
Registrado: ene 2009
Posts: 9
Poder: 0
gcc32 Va por buen camino
Ya lo habia comprobado

Ya lo he comprobado, habia puesto el caption, esta todo correcto estoy desesperado...
Responder Con Cita
  #6  
Antiguo 24-03-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
¿Tienes declarada la variable S como String?

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #7  
Antiguo 24-03-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues la asignación directa te tiene que funcionar acabo de probarlo.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=TimeToStr(Now);
end;


Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #8  
Antiguo 24-03-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
He probado tu código y funciona perfectamente.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
hora2:Ttime;

begin
    hora2:=Time;
    s:=TimeToStr(time); //  <<---- Se me situa el cursor (|Time)
    ShowMessage(s);
end;

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #9  
Antiguo 24-03-2010
gcc32 gcc32 is offline
Registrado
 
Registrado: ene 2009
Posts: 9
Poder: 0
gcc32 Va por buen camino
Gracias

Efectivamente, eso funciona pero en una aplicación nueva, no se porque de todas maneras, seguiré investigando, gracias.



¿Otra pregunta, como elimino los dos puntos de la hora para poder operar como si fuera un numero? Ej: 22:47:00 -> 224700


Muchisimas gracias
Responder Con Cita
  #10  
Antiguo 24-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Creo que existe un método para eso, pero yo no me lo acuerdo.
Podrías hacerlo vos mismo
Código Delphi [-]
function TimeToInt(T:TTime):Integer;
var
  S1,S2:String;
  I:Integer;
begin
  S1:=TimeToStr(T);
  S2:='';
  I:=1;
  while (I<=Length(S1)) do begin
    if (S1[i]<>':') then
      S2:=S2+S1[i];
    Inc(I);
  end;
  Result:=StrToInt(S2);
end;
Saludos.
Responder Con Cita
  #11  
Antiguo 24-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Haciendo un repaso:
Para cargar la hora actual en un TLabel lo único que necesitás es
Label1.Caption:=TimeToStr(Now)
No necesitás declarar ninguna variable extra (a menos que la necesites para almacenarlo).
La función Now devuelve solamente la hora actual, no devuelve fecha.
Responder Con Cita
  #12  
Antiguo 24-03-2010
gcc32 gcc32 is offline
Registrado
 
Registrado: ene 2009
Posts: 9
Poder: 0
gcc32 Va por buen camino
Muchas Gracias

Muchas Gracias, ya lo he conseguidoo!
Responder Con Cita
  #13  
Antiguo 24-03-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por gcc32 Ver Mensaje
...
¿Otra pregunta, como elimino los dos puntos de la hora para poder operar como si fuera un numero? Ej: 22:47:00 -> 224700
...
Pues sencillamente puedes reemplazar los dos puntos( por vacio('') haciendo algo así:
Código Delphi [-]
Label1.Caption:=StringReplace(TimeToStr(Now),':','',[rfReplaceAll]);
ahora si lo quieres como número entero podría ser así:
Código Delphi [-]
entero:=StrToInt(Trim(StringReplace(TimeToStr(Now),':','',[rfReplaceAll])));
.
Aunque en éste ultimo he agregado la funcion Trim para eliminar los espacios en blanco ya sea por delante o al final, ya que tal parece se obtiene un error si no se lo hace,ya que al hacer la transformacion y reeplazo se obtiene un espacio en blanco al final. .
Espero te sea de utilidad..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 24-03-2010 a las 23:29:11.
Responder Con Cita
  #14  
Antiguo 24-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Eso que dijo rgstuamigo con StringReplace es justamente a lo que me refería yo con "Creo que existe un método para eso, pero yo no me lo acuerdo."
Responder Con Cita
  #15  
Antiguo 25-03-2010
cmm07 cmm07 is offline
Miembro
 
Registrado: nov 2007
Posts: 526
Poder: 17
cmm07 Va por buen camino
Cita:
Empezado por rgstuamigo Ver Mensaje
Pues sencillamente puedes reemplazar los dos puntos( por vacio('') haciendo algo así:
Código Delphi [-]Label1.Caption:=StringReplace(TimeToStr(Now),':','',[rfReplaceAll]);

ahora si lo quieres como número entero podría ser así:
Código Delphi [-]entero:=StrToInt(Trim(StringReplace(TimeToStr(Now),':','',[rfReplaceAll])));

.
Aunque en éste ultimo he agregado la funcion Trim para eliminar los espacios en blanco ya sea por delante o al final, ya que tal parece se obtiene un error si no se lo hace,ya que al hacer la transformacion y reeplazo se obtiene un espacio en blanco al final. .
Espero te sea de utilidad..
Saludos...

Hola ajjaja me adelantaste jaaja, , justo iba a responder eso mismo con el Stringreplace jajjaja.

saludos y q esten toodos OK!
Responder Con Cita
  #16  
Antiguo 18-11-2010
gonza_619 gonza_619 is offline
Miembro
 
Registrado: feb 2010
Posts: 157
Poder: 15
gonza_619 Va por buen camino
hola, bueno para guardar hora en un campo string, la hora de un dtpicker, podria ser algo como:

primero cambio el formato: dtpicker.format:=HH:mm

luego
var x:tdatetime
x:=dtpicker.time;
tablex.fieldbyname('hora'),asstring:=timetostr(x);

estaria en lo correcto?
otra pregunta, si quiero comparar la variable x para ver si es > o < a por ej:05:00
if x<05:00 then hace algo
me lo compara?
Responder Con Cita
  #17  
Antiguo 19-11-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Cita:
Empezado por gonza_619 Ver Mensaje
hola, bueno para guardar hora en un campo string, la hora de un dtpicker, podria ser algo como:

primero cambio el formato: dtpicker.format:=HH:mm

luego
var x:tdatetime
x:=dtpicker.time;
tablex.fieldbyname('hora'),asstring:=timetostr(x);

estaria en lo correcto?
otra pregunta, si quiero comparar la variable x para ver si es > o < a por ej:05:00
if x<05:00 then hace algo
me lo compara?
Para guardar la hora en un string y mandarla a la BD:
Código Delphi [-]
var
  S: String;
begin
  S := FormatDateTime('HH:mm',dtpicker.Time);
  tablex.fieldbyname('hora'),asstring := S;
  //Mas simple: tablex.fieldbyname('hora'),asstring :=  FormatDateTime('HH:mm',dtpicker.Time);
end;

Para comparar:
Código Delphi [-]
var
  X, Comparacion: TTime;
begin
  X := Now;
  Comparacion := StrToTime('05:00:00');
  if (X < Comparacion) then //Si X es menor a 05:00:00
    ShowMessage(TimeToStr(X) + ' es menor a ' + TimeToStr(Comparacion))
  else if (X > Comparacion) then //O mayor
         ShowMessage(TimeToStr(X) + ' es mayor a ' + TimeToStr(Comparacion))
       else
         ShowMessage('Son iguales');
end;
Responder Con Cita
  #18  
Antiguo 19-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola gonza_619.

Sobre tu primer consulta, yo lo haría en forma directa:
Código Delphi [-]
   TableX.FieldByName('HORA').AsString:= TimeToStr(DateTimePicker1.Time);

Sobre la segunda no te lo compara. Y hace algo: te dá error. No podés comparar 05:00, que supongo que es de tipo string, con una variable de tipo TDateTime.
Para compararla sería:
Código Delphi [-]
uses DateUtils;
var
  x: TDateTime;
begin
  x:= Now;
  if TimeOf(x) > StrToTime('05:00') then
  ...

Recordá que tenes mayor posibilidad de hallar respuestas si inicias un nuevo hilo con tu duda.
Además, facilitas a otros compañeros con el mismo problema a encontrar más rápidamente una solución.


Saludos.

Última edición por ecfisa fecha: 19-11-2010 a las 07:36:29.
Responder Con Cita
  #19  
Antiguo 19-11-2010
gonza_619 gonza_619 is offline
Miembro
 
Registrado: feb 2010
Posts: 157
Poder: 15
gonza_619 Va por buen camino
bueno gracias ya me salio, pero una consulta mas, si utilizo un datetime picker, necesitaria que simpre me guarde los segundo en 00 ya que aparecen con 53 en mi caso, lo q hize fue cambiarle en 00 donde aparaece en la propiedad del dtpicker, con eso seria sificiente? o despues se vuelve a cambiar solo? grax
Responder Con Cita
  #20  
Antiguo 19-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Podrías hacer así:
Código Delphi [-]
uses DateUtils;
var
  aa,mm,dd,h,m,s,ms: Word;
begin
  DecodeDateTime(DateTimePicker1.DateTime, aa, mm, dd, h, m, s, ms);
  TableX.FieldByName('HORA').AsString:= IntToStr(h);
end;
De ese modo podés guardar lo que quieras del TDateTimePicker, desde el año hasta los milisegundos.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Conversión de Lat/Lng a UTM y viceversa sur-se Varios 7 25-11-2016 18:29:39
Convertir IP al nombre relacionado y viceversa arima Internet 16 16-08-2006 17:34:52
Pasar Delphi 5 a 6,7 y viceversa Ivanzinho Varios 2 29-11-2005 10:36:14
conversion de double a string y viceversa mainau Varios 2 03-08-2004 21:11:30
Convertir una Variable de String a Integer y Viceversa. aleidania Varios 1 13-07-2003 16:35:37


La franja horaria es GMT +2. Ahora son las 21:18:32.


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
Copyright 1996-2007 Club Delphi