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 11-02-2008
jocey jocey is offline
Miembro
 
Registrado: ene 2007
Posts: 111
Poder: 18
jocey Va por buen camino
Dias entre TimePickers

Hola amigos, les traigo una nueva pregunta hoy, yo tengo dos Timepickers que los utilizo para calcular la cantidad de dias entre ellos dos, ahora eso esta muy bien, pero quisiera que no se contaran los fines de semana..... como puedo hacer esto, me explico bien?


Saludos a todos
Jocey
Responder Con Cita
  #2  
Antiguo 11-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Hola.

Bueno, así, de cabeza, podrías hacer lo siguiente:

-El tipo DateTime no es más que un float, la unidad es un día, y los decimales, fracciones de días. Es decir, Dias:=Fecha2-Fecha1; debería funcionar.
-Pero claro, eso no resta los fines de semana, ¿cómo quitarlos? Ajusta primero las dos fechas, para que coincidan las dos con el mismo día de la semana que NO sea sábado o domingo. Es decir, después de hacer la resta, haz que los dos días se conviertan en lunes, o martes, o miércoles... utiliza la función DayOfWeek o DayOfTheWeek.
-Una vez hecho ese ajuste, Dias:=Dias-(Fecha2-Fecha1)*2/7. Esto es, le resta 2/7 partes de días, o lo que es lo mismo, 2 días de cada semana (los findes). Ahora Fecha1 y Fecha2 son las fechas ya ajustadas.


Espero que te sirva.


Salu2
Responder Con Cita
  #3  
Antiguo 11-02-2008
jocey jocey is offline
Miembro
 
Registrado: ene 2007
Posts: 111
Poder: 18
jocey Va por buen camino
Gracias

IxMike muchas gracias el ejemplo que me distes esta perfecto, una vez mas gracias... sin ustedes todo seria muy dificil, a veces en cosas sencillas nos trabamos y estan ustedes como dioses....

Gracias de todos corazon
Responder Con Cita
  #4  
Antiguo 11-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Cita:
Empezado por jocey Ver Mensaje
...y estan ustedes como dioses....
¿Sólo como dioses? ¡Somos dioses! y sufrirás la ira divina (o la gracia, según nos trates).

Cita:
Empezado por jocey Ver Mensaje
Gracias de todos corazon
De nada, mortal, de nada


Salu2.
Responder Con Cita
  #5  
Antiguo 11-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por ixMike Ver Mensaje
......Ajusta primero las dos fechas, para que coincidan las dos con el mismo día de la semana que NO sea sábado o domingo. Es decir, después de hacer la resta, haz que los dos días se conviertan en lunes, o martes, o miércoles... utiliza la función DayOfWeek o DayOfTheWeek.
-Una vez hecho ese ajuste, Dias:=Dias-(Fecha2-Fecha1)*2/7. Esto es, le resta 2/7 partes de días, o lo que es lo mismo, 2 días de cada semana (los findes). Ahora Fecha1 y Fecha2 son las fechas ya ajustadas.
Solo agregando, si no puedes o no quieres ajustar las fechas, puedes hacer esto.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Fecha : TDateTime;
  Dias : integer;
begin
  dias := 0;
  Fecha := DateTimePicker1.Date;
  REPEAT
     if DayofWeek(Fecha) in [2..6] then begin //en mi caso 2 a 6 es Lunes a Viernes, pero podria ser diferente en tu caso
        Memo1.Lines.Add(DatetoStr(Fecha));
        Inc(Dias);
     end;
     Fecha := Fecha+1;
  UNTIL Fecha > DateTimePicker2.Date;
  Memo1.Lines.Add('Total dias : '+FloattoStr(Dias));
end;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 13-02-2008
Avatar de Garry
Garry Garry is offline
Miembro
 
Registrado: nov 2007
Posts: 60
Poder: 17
Garry Va por buen camino
Puedes simplificar algo, pues si haces...
Cita:
Empezado por ixMike Ver Mensaje
... Dias:=Fecha2-Fecha1...
... y...
Cita:
... Dias:=Dias-(Fecha2-Fecha1)*2/7...
Queda más sencillo sacando factor común
Código Delphi [-]
Dias:=Dias*5/7
¿no?

Saludos

Última edición por Garry fecha: 13-02-2008 a las 12:43:21. Razón: Error de edición
Responder Con Cita
  #7  
Antiguo 13-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Cita:
Empezado por Garry Ver Mensaje
Puedes simplificar algo, pues si haces...
... y...Queda más sencillo sacando factor común Código Delphi [-]Dias:=Dias*5/7

¿no?

Saludos
jeje

sí, efectivamente, además de que se optimiza el código

¡qué raro que no se me ocurriera!


Salu2.
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
Determinar dias entre dos fechas OscarRd Varios 6 06-08-2007 12:26:00
Días entre de dos fechas ? lucasarts_18 HTML, Javascript y otros 1 26-07-2007 22:49:53
Diferencia en dias entre dos fechas. AMINOA2R Firebird e Interbase 2 15-12-2005 15:58:37
dias entre dos fechas davidgaldo Varios 5 19-05-2005 21:02:03
Contar dias de la semana entre fechas lolobs Varios 1 04-09-2003 16:11:24


La franja horaria es GMT +2. Ahora son las 08:38: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
Copyright 1996-2007 Club Delphi