Intervalo entre minutos

Olá a todos,estou com uma duvida com validação de horarios,onde preciso que o sistema não deixe uma nova consulta medica ser registrada caso uma ja tenha sido feita em menos de 30 minutos.Estou querendo verificar isso,pois nunca trabalhei com este tipo de validação.

Obrigado.

1 curtida

Pedro, veja se este artigo anterior lhe ajuda, foi mesma situação : obter o tempo em minutos/horas entre duas data-hora, que no seu caso deve ser DataHoraAgora e DataHoraUltimaConsulta, calcular o tamanho do intervalor, no seu caso em minutos, e decidir em função de um valor maximo parametrizavel, que agora para vc é de 30 minutos mas pode mudar, certo ?

De um jeito um pouco mais alto nível, sem ficar fazendo multiplicamos mirabolantes, que você olha e código e demora um pouquinho pra entender, se estiver usando java 8, ele já possui uma api nativa para trabalhar com datas, caso esteja em um ambiente inferior ao java 8, você pode usar o joda time, que é o qual vou deixar um exemplo aqui.

Date time = new GregorianCalendar().getTime();
Date time1 = new GregorianCalendar(2016, 2, 22, 11, 03).getTime();
DateTime dateTime = new DateTime(time);
DateTime dateTime2 = new DateTime(time1);
int minutes = Minutes.minutesBetween(dateTime2, dateTime).getMinutes();
System.out.println(minutes);
if(minutes <= 30){ // faz algo

}

Ai o que mudaria é como vc está obtendo essa data, se vem um date, um calendar, uma string, ai você teria que fazer o parse para o joda-time, mas a implementação em si, é isso :slight_smile:

Com certeza.No meu caso,estou mandando para o servidor no formato HH:ss como tipo string,e neste código que montou eu poderia posiciona-ló aonde?

Obrigado.

HH:ss ?
Você passa a hora e o segundo, e quer saber a diferença em minutos ?

perdão É HH:mm

Estou fazendo desta maneira agora:

		java.util.Date time = new GregorianCalendar().getTime();
		java.util.Date time1 = new GregorianCalendar(2016, 2, 22, 11, 03).getTime();
		//DateTime dateTime = new DateTime(time);
		DateTime dateTime2 = new DateTime(time1);

		org.joda.time.format.DateTimeFormatter formatter = DateTimeFormat
				.forPattern("HH:mm");
		DateTime dt = formatter.parseDateTime(agendamento1.getHora());

		/*
		 * DateTimeFormatter formatter=DateTimeFormatter.fo java.util.Date data
		 * = formatador.parse(agendamento1.getHora()); Time horaAgendamento =
		 * new Time(data.getTime());
		 */

		int minutes = Minutes.minutesBetween(dateTime2, dt).getMinutes();
		System.out.println(minutes);
		if (minutes <= 30) { // faz algo
			**Exception()
		}

agendamento.getHora() é a hora que eu recupero do sistema.

E mesmo não estando dentro do intervalo ele ainda é barrado

então sua implementação está errada, o código é simples.
Se ele está barrando debuga e vê simples

blz

Boa Tarde, como ficaria o SQL do datetime2, estou criando uma tabela, e coloquei
CREATE TABLE ‘tb_acesso’ (
id_acesso int(111) NOT NULL,
name_acessovarchar(20) NOT NULL,
password_acesso varchar(20) NOT NULL,
last_acess Datetime2(7) not null default getDate(),
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

no
INSERT INTO tb_acesso (id_acesso,name_acesso, password_acesso,last_acess) VALUES (1,Joao,‘qualquersenha’, 2017-10-18 14:58:25.1234567);

ALTER TABLE tb_acesso);
ADD PRIMARY KEY (ìd_acesso`);

ALTER TABLE tb_acesso
MODIFY id_acessoint(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1; COMMIT;

alguém ja fez uma tabela com o Datetime2?

agradeço desde já.