Trabalhando com Datas e Horas

Estou desenvolvendo um software para controle de ponto, para isso tenho que guardar no bd a data e o horário que a pessoa bateu o ponto, essa hora tenho que pegar no servidor, não posso pegar do pc do funcionario pois o mesmo pode alterar a data e a hora, gostaria de saber como eu pego essa data/hora com fuso horário diferentes.
Como eu faço pra somar as horas trabalhadas tipo
hora entrada - hora saida
total de horas semana como exemplo abaixo.
Entrada Saída Entrada Saída SomaManha SomaTarde Total
Segunda 8:10 11:45 13:30 18:00 3:35 4:30 8:05
Terça 8:10 11:45 13:30 18:00 3:35 4:30 8:05
Quarta 8:10 11:45 13:30 18:00 3:35 4:30 8:05
Quinta 8:10 11:45 13:30 18:00 3:35 4:30 8:05
Sexta 8:10 11:45 13:30 18:00 3:35 4:30 8:05
Sábado 8:10 11:00 2:50 0:00 2:50
Total Semanal => 43:15:00

Bem… como a data não vai ser a data da máquina do cliente a questão ai é mais quanto ao banco do que com java…
você teria que ter, um exemplo, uma tabela ou mais tabelas, não sei como você está fazendo… que contém a data do tipo date, no Postgres, em particular,
eu posso inserir essa data chamando uma função dele interna “now()”, a função “now()” coloca no banco a data atual e horário atual da máquina que está rodando o banco. Você faria isso para a entrada e saida, depois para calcular o tempo total, como os tipos das colunas seriam do tipo date, java já reconhece como sendo de um tipo java.util.Date, você pegaria as duas datas e o resto é com você…

Acredito que isso vai depender de como vc esta modelando
sua aplicação, se vc puder colocar o mer ai pra gente dar uma olhada…

Mais a principio mesmo que vc pegue a data atual via java, essa
é a data do servido, pois pelo que vi sua aplicação é web…

FLwS

Qual SGBD vc está usando? No Mysql por exemplo, vc pode usar uma coluna do tipo Timestamp e setar para que o banco registre a hora no momento da inserção do registro. Agora quanto a subtração dos horarios dá uma pesquisa na API do Calendar que acredito que tenha como vc fazer isso. Salve meu engano, vc consegue pegar as datas em milesimos de segundo, daí é só usar e abusar da matemática… :lol: :lol: :lol: :lol:

dica: use http://joda-time.sourceforge.net

Porem se ele estiver com os 4 Timestamp na mesma tabela, ele nao consegue fazer o que vc disse…
por isso disse que ele tinha que mostrar como ele pretende modelar a sua aplicação
para nos podermos ajuda-lo…

:wink:

Outra alternativa além do TIMESTAMP, é vc fazer uma aplicação que rode no cliente, mas que faça requisições para um back-end, cujo cuidará de pegar os dados, Data e Funcionário e trabalhar com eles para persistir.

Assim não terá problemas do cliente mudar horário, pq quem fara o suposto getDate() vai ser o servidor.

Procure por GregorianCalendar, para trabalhar com datas.

:wink: