Contador de dias corridos

03/05/2019

0

Bom dia, estou com um problema, tenho um arquivo em pdf que tenho um campo com uma data inicial e quero em outro campo que aparece nele quantos dias se passaram da data inserida até o dia de hoje. Um campo começaria a contar do mesmo dia e em outro caso começaria a contar do próximo dia.
Exemplo paciente internou no dia 03/05/2019 assim em no dia 07/05/2019 ele estaria no D5 de internação pois começou a contar do primeiro dia e em um outro caso, comecei com um antibiótico no dia 03/05/2019, assim no dia 07/05/2019 ele estaria no D4 pois começa a contar no próximo dia. Alguém pode me fazer uma gentileza de me ajudar como fazer esses dois scripts para ser inserido neste arquivo pdf ?
Renato Orsini

Renato Orsini

Responder

Posts

03/05/2019

Diego Bruning

Quanto a parte do PDF eu não entendi muito bem, mas para obter a diferença em dias entre duas datas poderia fazer como segue:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.TimeUnit;

import org.junit.Assert;

public class DifferenceBetweenTwoDates {

	public static void main(String[] args) throws ParseException {
		String sFirstDay = "06/24/2017";
		String sSecoundDay = "06/30/2017";

		SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
		Date firstDate = sdf.parse(sFirstDay);
		Date secondDate = sdf.parse(sSecoundDay);

		// Sem java 8
		DifferenceBetweenTwoDates ex = new DifferenceBetweenTwoDates();
		Assert.assertEquals(ex.obterDiferencaSemJava8(firstDate, secondDate), 6);
		Assert.assertEquals(ex.obterDiferencaSemJava8APartirSegundoDia(firstDate, secondDate), 5);

		// Com java 8
		DateTimeFormatter dtm = DateTimeFormatter.ofPattern("MM/dd/yyyy");
		LocalDate d1 = LocalDate.parse(sFirstDay, dtm);
		LocalDate d2 = LocalDate.parse(sSecoundDay, dtm);

		Assert.assertEquals(ex.obterDiferencaComJava8(d1, d2), 6);
		Assert.assertEquals(ex.obterDiferencaComJava8APArtirSegundoDia(d1, d2), 5);
	}

	public long obterDiferencaSemJava8(Date firstDate, Date secondDate) {

		long diffInMillies = Math.abs(secondDate.getTime() - firstDate.getTime());
		long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);
		System.out.println(diff);
		return diff;
	}

	public long obterDiferencaSemJava8APartirSegundoDia(Date firstDate, Date secondDate) {

		Calendar c = Calendar.getInstance();
		c.setTime(firstDate);
		c.add(Calendar.DATE, 1);

		return obterDiferencaSemJava8(c.getTime(), secondDate);
	}

	public int obterDiferencaComJava8(LocalDate d1, LocalDate d2) {

		Period period = Period.between(d1, d2);
		int diff = period.getDays();
		System.out.println(diff);
		return diff;

	}

	public int obterDiferencaComJava8APArtirSegundoDia(LocalDate d1, LocalDate d2) {
		d1 = d1.plusDays(1);
		return obterDiferencaComJava8(d1, d2);

	}
}



Responder

05/05/2019

Renato Orsini

Deixe me explicar melhor a minha pergunta.
Tenho um formulario em PDF e tenho um campo denominado entradacti que tem a data de entrada do paciente no CTI e preciso que o tempo de internação contado a partir do primeiro dia em relacao a data atual, retorne em um campo denominado diasinternacao ( números redondos).
Ao mesmo tempo que tenho 4 campos de antibióticos chamados dataatb1, dataatb2, dataatb3, dataatb4 que devem retornar o tempo de antibióticos a contar do segundo dia em relacao a data atual nos campos tempo1, tempo2, tempo3, tempo4 respectivamente.
Alem de atualizar a data atual em um campo chamado dataatual.
Assim tenho um botao com o emblema do hospital que ao passar por ele ou clicar nele, ativaria este script e os dados anteriores seriam atualizados para os dados recentes todos os dias quando forem evoluir os pacientes.
Dá para fazer desse jeito? Grato desde já a ajuda já prestada
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar