Datas

4 respostas
M

Estou com problemas com relação a operações com datas. Subtração entre duas datas me retornando um valor inteiro, e a utilização de apenas o dia da semana em valor inteiro. As Apis Calendar, CalendarDate e Date e SimpleDateFormat, oferecem opções para isso mas sempre me retornam um valor não condizente. Alguém poderia postar uma idéia de Como Trabalhar com datas. :?: 8O

4 Respostas

BrunoBastosPJ

Pelo que sei as contas com datas retonam um long, você tem apenas que usar esse long e converte-lo para um Date. Não sei a classe que faz isso, mas deve ser fácil achar no google “how to convert long to date java” :wink:

C

java.util.Date data = new java.util.Date(seuLong);

J
Date data1 = new Date();
Date data2 = new Date();

long dif = data2.getTime()-data1.getTime();
long dias = dif/(1000L*60*60*24);
GregorianCalendar cal = new GregorianCalendar();
int diaSemana = cal.get(Calendar.DAY_OF_WEEK);
M

Depois de alguma trabalho, consegui subtrair dois XMLGregorianCalendar e obter a diferença em dias, pois eu precisava calcular quantos dias em relação ao DeadLine meu valor estava.
O exemplo é pra XMLGregorianCalendar mas pode ser facilmente adaptado para Calendar.

XMLGregorianCalendar today = new XMLGregorianCalendarImpl( new GregorianCalendar() );
	XMLGregorianCalendar dueDate = new XMLGregorianCalendarImpl( new GregorianCalendar(2008, 2, 25) );
	try {
		DatatypeFactory fac = DatatypeFactory.newInstance();
		Duration durToday = fac.newDuration(true, today.getYear(), today.getMonth(), today.getDay(), 0, 0, 0);
		Duration durDeadLine = fac.newDuration(true, dueDate.getYear(), dueDate.getMonth(), dueDate.getDay(), 0, 0, 0);
		Calendar calZero = new GregorianCalendar(0, 0, 0); // obtem um ponto de referência para calculo do nro de dias
		
		Duration durDaysOfDeadLine = durDeadLine.normalizeWith(calZero);
		Duration durDaysOfToday = durToday.normalizeWith(calZero);
		
		System.out.println( durDaysOfToday.getDays() - durDaysOfDeadLine.getDays() );
	} catch (DatatypeConfigurationException e) {
		e.printStackTrace();
	}

Espero q ajude, procurei por isso em alguns forums mas não achei nada.

Criado 13 de setembro de 2006
Ultima resposta 20 de fev. de 2008
Respostas 4
Participantes 5