Delphi - dividir fechas para turnos

 
Vista:

dividir fechas para turnos

Publicado por leonela (1 intervención) el 21/02/2013 02:28:06
hola gente.... saludos a todos.

Necesito que me ayuden con un código, para dividir turnos, para saber que dia estaré trabajando y que dias estare libre, si de noche o de dia. En mi trabajo hacemos turnos de 12 horas en el trabajo y 24 horas libre. Un dia entro a las 7 de la mañana, y trabajo de corrido asta las 19 horas de la tarde, y ahi tengo libre de las 19 horas asta las 19 horas del dia siguiente.

Osea que ago un dia trabajo de dia, y el proximo dia de trabajo lo hago de noche.

Los turnos los dividimos en tres grupos, Grupo A, B y C. El A entra a las 07 horas y sale a las 19 horas, y ahi entre el grupe B y sale al dia siguiente a la mañana a las 07 horas y entra en grupo C hasta las 19 horas de la tarde, y ahi se repite el ciclo A, B y C.

Y quiero ver la manera de que me muestre en pantalla en un edit los dias que entren a trabajar el grupo A, otro edit el grupo B y otro edit el grupo C.

La verdad que no tengo idea de como dividir en tres turnos... alguien me podria explicar algo....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

dividir fechas para turnos

Publicado por William Alexander Brito Viñas (1 intervención) el 22/02/2013 22:40:11
Para saber si determinado momento que grupo esta trabajando pues divide el lapso de tiempo convertido en horas entre 12 y verifica el resto de la divison entera el numero obtenido y 3. Segun el valor del resto de la division entera sabras:

si es 0 pues turno A
si es 1, turno B
de lo contrario C.

function Ejemplo(date1, date2 :TDateTime) :string
const
respuestas :array[0..2] of char = ('A', 'B', 'C');
var
index :integer;

begin
index := (((date2-date1)/2) mod 3);
Result = 'Turno ' + respuestas[index];
end


No tengo ningun compilador de pascal a mano asi que estoy inventandome la sintaxis y ademas asumiendo que la diferencia de dos TDateTime produce la cantidad de días transcurridos donde la parte fraccionaria representa las horas, min y segs.

Si siempre usas A, B y C para los turnos podrias por ejemplo usar la formula:
'Turno ' + Chr(65 + (((date2-date1)/2) mod 3));

verifica que funcione, no tengo delphi.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar