Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   !!!Duda sobre cálculos de fechas !!! (https://www.clubdelphi.com/foros/showthread.php?t=74387)

Darkseratul 16-06-2011 00:45:08

!!!Duda sobre cálculos de fechas !!!
 
hola compañeros del club delphi

tengo un problema a la hora de calcular fechas

tengo un campo con una fecha " 12/05/2011 " Día, Mes, año

como le hago para que el programa me cuente los días a la fecha actual

12/05/2011 que de esta fecha empiece a contar hasta 102 días hasta la fecha actual

campo fecha "12/05/2011" y en una label me diga van 24 días y quedan 81

en resumen que compare la fecha actual con el del campo y que me de resultado los dias que van de los 102

buscando en el foro me encontré este código

pero no se como aplicarlo

Código Delphi [-]
procedure TFPrincipal.DBGListarAgendaDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
   //  Confirmo en la bd si se cumple una de las alarmas
   if Column.Field.Dataset.FieldbyName('alarma1').AsInteger = 1 then
      begin
         if (gdFocused in State) then
            DBGListarAgenda.canvas.brush.color := clBlack
         else
         begin
         //Pinto el color que quiero pa la alarma
         DBGListarAgenda.canvas.brush.color := clColorAlarma1;
         end;
      end;

este código es para un dbGrid

espero que me puedan ayudar gracias

ecfisa 16-06-2011 04:07:44

Hola Darkseratul.

Cita:

tengo un campo con una fecha " 12/05/2011 " Día, Mes, año como le hago para que el programa me cuente los días a la fecha actual
Hasta aqui voy bien:
Código Delphi [-]
uses DateUtils;
...
var
  NroDias: Integer;
begin
  NroDias:= DaysBetween(Now,StrToDate('12/05/2011'));
  ...
end;

Cita:

12/05/2011 que de esta fecha empiece a contar hasta 102 días hasta la fecha actual campo fecha "12/05/2011" y en una label me diga van 24 días y quedan 81
en resumen que compare la fecha actual con el del campo y que me de resultado los dias que van de los 102
Esto último no lo entiendo en absoluto.


Saludos.

Casimiro Notevi 16-06-2011 10:49:06

Cita:

Empezado por ecfisa (Mensaje 403922)
Esto último no lo entiendo en absoluto.

Por eso no contesta nadie, porque no hay quien entienda la pregunta :)

Caro 16-06-2011 16:21:36

Hola, creo que lo que quiere es sumarle 102 dias a la fecha que tiene almacenada y en base a la fecha actual ver cuantos días han pasado y cuantos le faltan para llegar a esa fecha, creo que es eso, pero tampoco entiendo bien su pregunta.

Código Delphi [-]
var
 Fecha, FechaS: TDateTime;
 DiasP, DiasF : Integer;
begin
 Fecha := DataSet.FieldByName('fecha').AsDateTime; 
 FechaS :=IncDay(Fecha, 102);
 
 DiasP := DaysBetween(Now, Fecha);
 DiasF := DaysBetween(FechaS, Now); 
 
 Label.Caption := 'Han pasado :'+IntToStr(DiasP)+' días faltan '+IntToStr(DiasF)+' días'+;

Saluditos

Darkseratul 16-06-2011 23:07:29

Gracias por la pronta respuesta
 
Si se que no me se explicar pero no sabia como hacerlo :( disculpen

Pues miren

tengo una fecha de inicio que el usuario captura, para el sistema es la fecha de inicio

para hacer lo que necesito he pensado en tres cosas la fecha de inicio, la fecha actual (es la fecha el día) y un dato que son 102

me explico con una imagen a ver si me doy a entender :)



es algo asi espero que me den una idea de como hacerlo

oscarac 16-06-2011 23:40:39

quiza esto te pueda ayudar

ecfisa 17-06-2011 02:06:04

Hola Darkseratul.

Sigo sin entenderte muy bién, pero a ver si lo que andas buscando es algo así...
Código Delphi [-]
begin
  ShowMessage(Format('%s %d %s %d %s',
              ['Transcurrieron: ',
               DaysBetween(Now, DateTimePicker1.Date),
               ' días. Restan: ',
               102-DaysBetween(Now, DateTimePicker1.Date),
               ' días']));
end;

Saludos.

Delphius 17-06-2011 03:46:21

A ver... no se de donde sale esos 102.
La hago fácil: dadas dos fechas, la cantidad de días entre ellos como ya te indicaron se puede obtener con DaysBetween().
Por tanto, la cantidad de días que faltan de la fecha menor a la mayor es justamente esa cantidad.
La pregunta aquí es ¿De donde (disculpen mi vocabulario) carajos sale los 102?

De tu imagen yo entiendo esto:
1) El usuario selecciona una fecha, llamemosla Fecha1
2) Se obtiene la fecha actual del sistema, llamemosla Fecha2
3) "Cuantos días quedan" o "cuantos días para terminar" indica resta o diferencia. Entonces simple: DaysBetween(). El resultado puede ser 101, 102, 365... 0.

Si a lo mejor en vez de aventar las oraciones sueltas, una a una, te tomaras la molestia de pensar tus palabras primero y reordenaras tus ideas podrías elaborar un buen párrafo, con sus debidos signos de puntuación (o al menos cuidando lo mejor posible) podríamos hacer una mejor lectura.

Es más, te propongo algo lijeramente diferente: en vez de aventarnos TU problema explica textualmente lo que debe hacer el usuario, el porqué, su para que, es decir: una descripción del objetivo. Olvidémosnos de fecha1, fecha2, daysbetween, etc. Hablemos: porqué esos 102, ¿que significan? ¿Para que se necesita hacer? ¿Cuál es el propósito, el fin último? Explica el contexto, y la idea y el problema (tu problema en realidad) saldrá a la vista.

Saludos,

maeyanes 17-06-2011 15:46:21

Hola...

Según entiendo, la solución de Caro es lo que el compañero busca: http://www.clubdelphi.com/foros/show...55&postcount=4


Saludos...

Darkseratul 17-06-2011 20:28:53

Gracias amigos por su ayuda
 
gracias por su ayuda amigos

Se que de vi estructurar bien el problema :(

Por te de la solución la ha dado Caro a un que por lo mismo que no me se explicar tampoco lo entiendo bien :(

El problema es este

fecha1 es la que captura el usuario
fecha2 fecha actual del sistema

limite 102 días (el proceso solo dura 102 días)

En la aplicación tengo que hacer un proceso general que cuente los días
el cual empieza con la fecha1 se compara con la fecha2 y el resultado es cuanto días lleva de los 102 días que se tienen de limite

espero a verme explicado, por que es lo mejor que puedo

muchas gracias Caro,Delphius,oscarac y en especial ecfisa que siempre me ayuda a un cuando no me explico bien te debo una parrillada :D

Darkseratul 12-07-2011 00:43:35

Muchas gracias a Caro que me ayudo muchísimo
 
la solución de caro es la como yo quería es genial y muchas gracias a todos los demás que siempre me ayudan a un que no me se explicar :D

Código Delphi [-]
var
 Fecha, FechaS: TDateTime;
 DiasP, DiasF : Integer;
begin
 Fecha := DataSet.FieldByName('fecha').AsDateTime; 
 FechaS :=IncDay(Fecha, 102);
 
 DiasP := DaysBetween(Now, Fecha);
 DiasF := DaysBetween(FechaS, Now); 
 
 Label.Caption := 'Han pasado :'+IntToStr(DiasP)+' días faltan '+IntToStr(DiasF)+' días'+;

Muchas gracias a todos


La franja horaria es GMT +2. Ahora son las 06:43:56.

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