Amanda Makino Postado Janeiro 6, 2009 Denunciar Share Postado Janeiro 6, 2009 Caros, a situação é a seguinte...Estou implementando um programa de Cadastro de RevezamentosEsses revezamentos são utilizados por aqueles funcionários que não fazem somente um horário todos os dias (como é de costume)...Eles fazem revezamentos, por exemplo: na segunda e na terça... fazem o horário da manhã...na quarta e na quinta.. trabalham à noite... sábado folgam... domingo trabalham no horário da tarde... e assim vai...Bem, andei olhando alguns sistemas de ponto pra ter uma idéia de como fazer esse cadastro...E vi um que achei bem interessante... só que é desktop...O que ele faz:- Na tela de cadastro... um "calendário" é preenchido automaticamente de acordo com a data atual:- Esse calendário é preenchido de acordo com o que foi preenchido na escala (seqüência de horários).Vejam só:- Na consulta, o programa exibe um calendário de acordo com a data atual e calcula quais são os horários respectivos para cada dia.. preenchendo-o.Então se eu cadastrei hoje esse revezamento... com a primeira coluna do calendário da seguinte forma:1 2 3 4 1 2 3 4Se eu for consultá-lo na sexta, essa primeira coluna estará:4 1 2 3 4 1 2 3O meu grande problema é esse... como preencher esse calendário automaticamente de acordo com a data atual nessa consulta?Sendo que:- não gravo um horário pra cada dia do ano...- gravo a escala (seqüencia de horários) e - gravo a data de criação do revezamentoAlguma luz?! Já pensei tanto numa solução... mas não consigo encontrar nenhuma! ><Vlw, pessoal.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 iSoron Postado Janeiro 10, 2009 Denunciar Share Postado Janeiro 10, 2009 Se eu entendi, você quer uma função que calcule isso:(pra simplificar, estou supondo que os dias sejam números)int horario(int dia, int sequencia[], int diaCriacao) { return sequencia[(dia - diaCriacao) % sequencia.length] } Exemplos: sequencia = { 1, 2, 3 } horario(2, sequencia, 2) => 1 horario(3, sequencia, 2) => 2 horario(4, sequencia, 2) => 3 horario(5, sequencia, 2) => 1Agora você só precisa atribuir um número para cada dia (o que deve ser fácil se você converter a data pra Unix time). Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Amanda Makino Postado Janeiro 12, 2009 Autor Denunciar Share Postado Janeiro 12, 2009 (editado) iSoron, nossa... muito obrigada pela resposta!Vou tentar implementar sua sugestão!Tenho quase certeza que irá dar certo...Depois eu volto para confirmar isto..Vlw, obrigada mesmo!! você é um gênio! :D Estava ficando louca aqui sem uma solução..rsrs^^ Editado Janeiro 12, 2009 por Amanda Makino Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Amanda Makino Postado Janeiro 13, 2009 Autor Denunciar Share Postado Janeiro 13, 2009 (editado) Vixi... mas em 2038 parece que o Unix Time vai dar pau... ><'rsSerá que não tem outro modo?! Editado Janeiro 13, 2009 por Amanda Makino Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 iSoron Postado Janeiro 14, 2009 Denunciar Share Postado Janeiro 14, 2009 Vixi... mas em 2038 parece que o Unix Time vai dar pau... ><'Se preocupe não, até lá todo mundo já vai estar usando 64 bits. Ou espera-se. :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Amanda Makino Postado Janeiro 15, 2009 Autor Denunciar Share Postado Janeiro 15, 2009 Humm.. então tá! ^^rsrsMas então... estou tentando converter a data para unix time no meu bean...Mas não estou conseguindo...Qual a sintaxe java pra isso?! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Amanda Makino Postado Janeiro 15, 2009 Autor Denunciar Share Postado Janeiro 15, 2009 (editado) Só achei o caminho inverso.. conversão de unix time para date... =/ Editado Janeiro 15, 2009 por Amanda Makino Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 iSoron Postado Janeiro 18, 2009 Denunciar Share Postado Janeiro 18, 2009 A função é:long Date.getTime() Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Amanda Makino Postado Janeiro 19, 2009 Autor Denunciar Share Postado Janeiro 19, 2009 (editado) Ahhh sim... q simples.. ^^rsrsrsVlw...Mas desse modo não funcionou... =/Pra testar eu cadastrei um revezamento e logo depois o consultei...O calendário da tela de consulta deveria estar do mesmo jeito que o da tela de cadastro, afinal, criei e consultei no mesmo dia...Mas não é o que acontece... =/Quando consulto e mando calcular os horários e jogar no calendário certinho...Fica tudo embaralhado...Método:public Long CalcularHorario(Date dataItem, String[] sequencia, Date dataCriacao) { Long utDataItem = dataItem.getTime(); Long utDataCriacao = dataCriacao.getTime(); return Long.parseLong(sequencia[(int) (utDataItem - utDataCriacao) % sequencia.length]); }Prints no endereço:http://novo.xpg.com.br/site/index.php?uid=1104717867551502Passos para visualizá-los:- clique no "+" de Fotos- abra o álbum Aplicação- clique na primeira foto ("Cadastrando").- depois é só indo pra frente... Editado Janeiro 19, 2009 por Amanda Makino Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Amanda Makino Postado Janeiro 19, 2009 Autor Denunciar Share Postado Janeiro 19, 2009 Ahhhh!! Deu certo!!!! \o/Finalmente!O problema é que a função estava passando a diferença em milisegundos para o cálculo do mod (%).E o que deveria passar era a diferença em dias, então fiz o seguinte:public Long CalcularHorario(Date dataItem, String[] sequencia, Date dataCriacao) { Long diferencaEmMiliSegundos = dataItem.getTime() - dataCriacao.getTime(); Long diferencaEmDias = diferencaEmMiliSegundos/(1000L*60L*60L*24L); return Long.parseLong(sequencia[(int) (diferencaEmDias % sequencia.length)]); }E funcionou! Nem acredito!! hehe!!Obrigada, Isoron!!! ;) Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Amanda Makino
Caros, a situação é a seguinte...
Estou implementando um programa de Cadastro de Revezamentos
Esses revezamentos são utilizados por aqueles funcionários que não fazem somente um horário todos os dias (como é de costume)...
Eles fazem revezamentos, por exemplo: na segunda e na terça... fazem o horário da manhã...
na quarta e na quinta.. trabalham à noite... sábado folgam... domingo trabalham no horário da tarde... e assim vai...
Bem, andei olhando alguns sistemas de ponto pra ter uma idéia de como fazer esse cadastro...
E vi um que achei bem interessante... só que é desktop...
O que ele faz:
- Na tela de cadastro... um "calendário" é preenchido automaticamente de acordo com a data atual:
- Esse calendário é preenchido de acordo com o que foi preenchido na escala (seqüência de horários).
Vejam só:
- Na consulta, o programa exibe um calendário de acordo com a data atual e
calcula quais são os horários respectivos para cada dia.. preenchendo-o.
Então se eu cadastrei hoje esse revezamento...
com a primeira coluna do calendário da seguinte forma:
1 2 3 4 1 2 3 4
Se eu for consultá-lo na sexta, essa primeira coluna estará:
4 1 2 3 4 1 2 3
O meu grande problema é esse... como preencher esse calendário automaticamente de acordo com a data atual nessa consulta?
Sendo que:
- não gravo um horário pra cada dia do ano...
- gravo a escala (seqüencia de horários) e
- gravo a data de criação do revezamento
Alguma luz?! Já pensei tanto numa solução... mas não consigo encontrar nenhuma! ><
Vlw, pessoal..
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.