Trabalhando com Horas no Struts2

7 respostas
T

Estou fazendo um TimeSheet (Apontamento de Horas) para treinar meu aprendizado.
Preciso digitar o horário de entrada e saída, porém, só consegui digitar datas.
Tô começando agora, agradeço se puderem me ajudar.
Segue o código que funciona com data, preciso transformar em HORA:

MySQL:
`entrada` DATE
Sheet:
private Calendar entrada;

public Calendar getEntrada() {
		return entrada;
	}

	public void setEntrada(Calendar entrada) {
		this.entrada = entrada;
	}
DAO:
stmt.setDate(3, sheet.getEntrada() != null ? new Date(sheet.getEntrada().getTimeInMillis()) : null);
DAO Popula:
private Sheet populaSheet(ResultSet rs) throws SQLException {
		Sheet sheet = new Sheet();
		
		Date horaEntrada = rs.getDate("entrada");
		if(horaEntrada != null) {
			Calendar entrada = Calendar.getInstance();
			entrada.setTime(horaEntrada);
			sheet.setEntrada(entrada);
		}
JSP:
Entrada: <br />
			<input type="text" name="sheet.entrada"
				value="<fmt:formatDate value="${sheet.entrada.time}" pattern="dd/MM/yyyy" />"/>
			<br />

Obrigado.

7 Respostas

T

ninguém? :frowning:

jaboot

Oi tiago,

O que acontece? Está dando pau em algum lugar ou simplesmente você não consegue transformar a data em hora?
Como está esse campo na tabela? Não pode ser date, tem que ser timestamp.

Você conhece o joda-time? É uma API muito boa pra fazer praticamente TUDO com datas e horas… vale a pena dar uma olhadinha!

Valeu!

T

Então, o código que mandei é o modo que data funciona.
Gostaria da ajuda de vocês para transformar em hora…

Como sou novo no mundo java, não sabia que precisava mudar pra timestamp no banco =/

jaboot

Sim, porque o Date provavelmente vai gravar só a data - dias, meses e anos. Você precisa do Timestamp pra gravar horas, minutos, segundos e tudo mais.

Tenta alterar o campo e diga o que acontece.

T

Troquei no banco e nas formatações dos jps: (dd/MM/yyyy) para (hh:mm), porém, tudo continua como data.
No DAO é convertido, no Popula também, tudo para data.

T

Fica tudo como 12:00

jaboot

Dá uma olhada no banco, pra ver como está gravando. Você está gravando como 12:00???

Se eu não me engano, quando acontece isso, ou é porque está 12:00 no banco, ou não conseguiu pegar as horas corretamente - eu faria a query na base e antes de mostrar na tela, debugaria pra ver como ela está no Java.

Edit: isso pode ser também quando você não especifica hora e salva na base - acredito que o default é 12:00.

Criado 17 de janeiro de 2011
Ultima resposta 18 de jan. de 2011
Respostas 7
Participantes 2