Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-08-2004
aoiTo aoiTo is offline
Miembro
 
Registrado: jul 2004
Ubicación: Cádiz - España
Posts: 21
Poder: 0
aoiTo Va por buen camino
Formato de fechas y DateTimePicker.

hola, un saludo todos/as, vereis, estoy haciendo una pequeña aplicación en C++ Builder 6, en la que quiero sacar un listado de todo entre lafecha 1 y la fecha 2. El problema es que el DateTimePicker devuelve la fecha en formato Dia/Mes/Año, y yo necesito que me lo devuelva en Mes/Dia/Año, ya que para hacer el select, Interbase me pide que sea en el formato Mes/Dia/Año. He probado la opcion Format, pero esta propiedad solo sirve para que de forma visual solo se vea en ese formato, ya que DateTimePicker->Date lo devuelve de la forma en la que a mi no me interesa.

¿Alguna idea? Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 23-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Un DateTimePicker te devuelve una fecha en el tipo TDateTime, que si te das una vuelta por la ayuda, verás que es un número, que no tiene intrinsecamente ningún tipo de formato.

Existen varias funciones, entre ellas FormatDateTime, DateTimeToStr, DateToStr, etc que te ayudan a formatear fechas.

Si es para pasarlo a una base de datos, es mejor el uso de parámetros en las sentencias SQL, por dos razones:
  • Te olvidas de los problemas con los formatos de fechas, puesto que la decisión del formato a usar queda entre los componentes de acceso y el cliente de la base de datos, siendo este regularmente numérico
  • Algunos motores, como oracle, evitan reanalizar de nuevo sentencias que usan parámetros y se ejecutan con frecuencia, consiguiente una notable mejora en el desempeño.

Si no sabes que son parámetros, y como asignarles valores en una sentencia SQL, te recomiendo usar la búsqueda de los foros, pues el tema se ha tratado multiples veces por aqui, y cualquier cosa dicha para delphi, valdrá igual para c++builder (en este caso).

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 23-08-2004
JoseBozzano JoseBozzano is offline
Miembro
 
Registrado: ago 2004
Posts: 10
Poder: 0
JoseBozzano Va por buen camino
fecha_formato

hola, no creo que sea lo mas optimo, pero quizas te ayude en algo, a pesar que no esta hecho en C++, pero seria cuestion de migrarlo nada mas, de hecho, lo que menciono jachguate es lo mas optimo.

Esta funcion podria ser mas sencilla para tu caso, pero yo la hice cuando necesité incluir los ceros a la izquierda en el mes y el dia. Chau.

Funcion llamadora...

procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Edit1.Text:=
form1.fecha_formato(datetostr(form1.DateTimePicker1.Date),'dd/mm/aa');
end;

Funcion llamada...

function tform1.fecha_formato(fecha,formato:string):string;
var
fecha_o,ch,d,m,a:string;
aux,largo,i,u:integer;
temp:string;
vector:array[0..9] of string;
begin
i:=0;
u:=i;
aux:=0;
largo:=length(fecha);
while (i <= 9) do begin
ch:=copy(fecha,i+1,1);
if (ch <> '/') then begin
vector[u]:=ch;
aux:=aux + 1;
i:=i+1;
u:=u+1;
end else begin
if aux = 2 then begin
i:=i+1;
u:=i-1;
aux:=0;
end else begin
temp:=vector[u - 1];
vector[u - 1]:='0';
vector[u]:=temp;
aux:=0;
i:=i+1;
u:=u+1;
end;
end;
end;
fecha_o:=vector[0];
for i:=0 to largo - 2 do begin
fecha_o:=fecha_o + vector[i + 1];
end;
d:=copy(fecha_o,3,2);
m:=copy(fecha_o,1,2);
a:=copy(fecha_o,5,4);
if formato = 'mm/dd/aa' then
result:= d + '/' +m + '/' + a ;
if formato = 'dd/mm/aa' then
result:= m + '/' + d + '/' + a ;
end;
Responder Con Cita
  #4  
Antiguo 23-08-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Hola,

No es que sea hincha ni mucho menos pero mirá que lindo queda el código con las etiquetas DELPHI del foro:
Código Delphi [-]
function tform1.fecha_formato(fecha,formato:string):string;
var
   fecha_o,ch,d,m,a:string;
   aux,largo,i,u:integer;
   temp:string;
   vector:array[0..9] of string;
begin
   i:=0;
   u:=i;
   aux:=0;
   largo:=length(fecha);
      while (i <= 9) do begin
         ch:=copy(fecha,i+1,1);
            if (ch <> '/') then begin
               vector[u]:=ch;
               aux:=aux + 1;
               i:=i+1;
               u:=u+1;
            end else begin
               if aux = 2 then begin
                  i:=i+1;
                  u:=i-1;
                  aux:=0;
               end else begin
                  temp:=vector[u - 1];
                  vector[u - 1]:='0';
                  vector[u]:=temp;
                  aux:=0;
                  i:=i+1;
                  u:=u+1;
               end;
            end;
      end;
   fecha_o:=vector[0];
      for i:=0 to largo - 2 do begin
         fecha_o:=fecha_o + vector[i + 1];
      end;
   d:=copy(fecha_o,3,2);
   m:=copy(fecha_o,1,2);
   a:=copy(fecha_o,5,4);
      if formato = 'mm/dd/aa' then
         result:= d + '/' +m + '/' + a ;
      if formato = 'dd/mm/aa' then
   result:= m + '/' + d + '/' + a ;
end;
JoseBozzano, como veo que tenés pocos mensajes calculo que debés ser nuevo así que te doy la bienvenida. Por otro lado no sería malo que mirarás la guía de estilo del foro...
http://www.clubdelphi.com/foros/guiaestilo.php

Saludos!
__________________
Suerte
.: Gydba :.

Última edición por Gydba fecha: 23-08-2004 a las 21:56:00. Razón: Me faltó la url de la guía...
Responder Con Cita
  #5  
Antiguo 09-03-2005
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 20
OSKR Va por buen camino
Señores!!! La solucion para el chamo solo consiste en establecer ShortDateFormat="mm/dd/yyyy"; antes de cualquier operacion a realizar con fechas con cualquier componente relacionado con las mismas.y ya!. Esta es una variable global en Builder, supomgo q su Delphi puede q tambièn lo tenga!
Responder Con Cita
  #6  
Antiguo 09-03-2005
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
Creo que no has captado bien el tema, una cosa es el formato de fecha que tengamos, corto, largo, mm/dd/yy .... y otra es que si utilizamos un TDateTimePicker éste almacena fecha y hora y si nos queremos llevar solamente la hora o la fecha, de que manera tenemos que interactuar con este control.

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 09-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por OSKR
Señores!!! La solucion para el chamo solo consiste en establecer ShortDateFormat="mm/dd/yyyy"; antes de cualquier operacion a realizar con fechas con cualquier componente relacionado con las mismas.y ya!. Esta es una variable global en Builder, supomgo q su Delphi puede q tambièn lo tenga!
¿A qué viene esta llamada de atención medio año después del último mensaje? A estas alturas quien formuló la pregunta seguramente ya está en otro proyecto. Además tu solución es tan válida como el uso de una función de formato con la ventaja de esta última de que sólo afectas al parámetro en sí y no al resto de la aplicación que puede estar desplegando fechas en otras partes. Pero más que nada, ya el compañero jachguate lo dijo en su día, lo mejor es usar parámetros por las razones que él mismo dió.

// Saludos
Responder Con Cita
  #8  
Antiguo 11-03-2005
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 20
OSKR Va por buen camino
Para marcoszorrilla:El DateTimePicker y creo q por lo general el resto de componentes se rigen bajo este formato (es decir, el q tenga la variable ShortDateFormat), si interactuamos con bases de datos usando estos componentes puede q no no obtengamos los resultados esperados, particularmente tenia este problema con Interbase y la solucion fue simple y llanamente alterar el formato de la variable, a partir de ahi en ella si se almacenaba lo q esperaba y para mostrar al usuario la retorno a su estado original y el DateTimePicker trabajaba de acuerdo a ella, en cuanto a la hora no veo en q parte esta escrito algo referente a ella (en aoiTo) solo veo q tiene o tenia un problema con el formato.

Para roman:
Me disculpo primeramente si en algun momento mi vocabulario los llego a provocar, no escribi en "tono" de regaño sino de "buena noticia", en cuanto al tiempo no considero q si han pasado años de haberse formulado la pregunta sea ese el motivo para no contestarla (tambien lo hago en algunos otros foros) puesto q hay usuarios q pueden explorar este foro y ver soluciones a sus inquietudes asi sean algo viejas (como yo!!! he encontrado soluciones aunque la pregunta ha sido mas vieja q Matusalèn), con respecto al uso de una funciòn no mencionè q fuera invàlida simplemente intentè dar una solucion mas corta (aunque reconozco q no es la mejor si uso fechas con hilos, no me topado con ese caso), ignorarè como siempre la fecha de la pregunta pero si mejorarè la manera de expresarme....................................... Saludos!
Responder Con Cita
  #9  
Antiguo 11-03-2005
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
Cita:
Para marcoszorrilla:El DateTimePicker y creo q por lo general el resto de componentes se rigen bajo este formato (es decir, el q tenga la variable ShortDateFormat)
ShortDateFormat, solamente sirve para mostrar la fecha de una u otra manera, la fecha siempre tendrá 4 dígitos para el año, una solución para no depender del formato de la fecha es utilizar parámetros.

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
  #10  
Antiguo 08-12-2006
egarc egarc is offline
Miembro
 
Registrado: jul 2006
Posts: 60
Poder: 18
egarc Va por buen camino
Problemas con la fechas

Para este problema, si sólo quieres grabar la fecha del DateTimePicker sólo pones:

Fecha:=DateTimepicker1.date;
Hora:=DateTimepicker1.time;

aca ya tienes la hora y la fecha del date time picker
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


La franja horaria es GMT +2. Ahora son las 13:49:00.


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