Como somar uma certa data a um certo numero de dias? Lembrando que recebo a data como string, no formato d/m/yyyy
operações com datas
8 Respostas
Utlize a classe Calendar ela resolverá seu problema bem simples:
String aData = data.split("/");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH , Integer.parseInt(aData[0]));
cal.set(Calendar.MONTH , Integer.parseInt(aData[1]));
cal.set(Calendar.YEAR , Integer.parseInt(aData[2]));
cal.add(Calendar.DAY_OF_MONTH , qtde de dias que vc quer em int);
A String aData tem q ser um array não seria isso…
Olha a assinatura do meu método:
public static List selectSumData(String Campo, String Tabela, String CampoCondicao, String strId, String Data) throws Throwable, Exception{
List<Combo> dadosComboList = new ArrayList();
a variavel Data precisa mesmo ser array?
Você pode criar um método simples que recebe outra data como entrada e te retorna o número de dias do intervalo …
pode também criar um método chamado dia_seguinte que pode somar a quantidade de dias à data atual … ( é mais chato de fazer pois você teria que levar em consideração vários fatores como nº de dias de cada mes, ano bissexto … essas coisas )
olha almarti…não entendi muito bem as explicações acima…mas entendo que vc usa o método Calendar para receber a data e armazena as mesmas em varíaveis…
Se vc precisa somar o dia…o primeiro passo é pegar a varíavel que contêm o dia e transforma-la em INT…afinal String não soma, só concatena…
exemplificando o q eu disse:
Calendar data = new GregorianCalendar();
int dia = data.get(Calendar.DAY_OF_MONTH);
/**eu usei uma varíavel normal…vc no caso deve ter um array…é só
- saber qual a posição do número a ser somado
*/
Espero ter esclarecido alguma dúvida…valeu…abraços… 
O metodo split devolve um array, na posição zero vai ter o DIA, na um o MÊS e na dois o ano… era isso q tava dizendo então vc adiciona em um array… o primeiro exemplo ta certo só tava faltando isso:
String[] aData = data.split("/");
Consegui fazendo a seguinte classe:
import java.util.*;
import java.text.*;
public class OpDatas{
public static String Add(String dt, String tp, int qt, String sFormat) throws ParseException {
Date tstHoje = new SimpleDateFormat(sFormat).parse(dt);
GregorianCalendar addDate = new GregorianCalendar();
addDate.setTime(tstHoje);
if (tp.equals("W") || tp.equals("w")) {// Adiciona "n"semanasa
addDate.add(Calendar.WEEK_OF_MONTH, qt);
} else if (tp.equals("D") || tp.equals("d")) {//Adiciona "n" dias
addDate.add(Calendar.DAY_OF_MONTH, qt);
} else if (tp.equals("M") || tp.equals("m")) {//Adiciona "n" meses
addDate.add(Calendar.MONTH, qt);
} else if (tp.equals("Y") || tp.equals("y")) {//Adiciona "n" anos.
addDate.add(Calendar.YEAR, qt);
}
//Pega uma instancia de DateFormat. A classe DateFormat encarrega-se
//de utilizar o "Locale" adequado
Date d = addDate.getTime();
DateFormat df = DateFormat.getDateInstance();
//Formata a String adequadamente
String s = df.format(d);
return s;
}
}
Valeu galera.
O metodo split devolve um array, na posição zero vai ter o DIA, na um o MÊS e na dois o ano... era isso q tava dizendo então vc adiciona em um array... o primeiro exemplo ta certo só tava faltando isso:String[] aData = data.split("/");
Obrigado Nino é isso mesmo , falta de atenção!