Ola Pessoal!
estou fazendo um calculo com data mas esta acontecendo o seguinte:
GregorianCalendar vencimento = new GregorianCalendar();
int inteiro;
vencimento.add(Calendar.DAY_OF_MONTH, 10);
System.out.print(vencimento.getTime());
da certinho, faz o cálculo, soma dez dias à data, armazenada em vencimento e imprime corretamente.
porém qdo uso assim:
GregorianCalendar vencimento = new GregorianCalendar();
int inteiro = 10;
vencimento.add(Calendar.DAY_OF_MONTH, inteiro);
System.out.print(vencimento.getTime());
imprime sempre a data atual (data do dia).
O que pode estar acontecendo?
Tem certesa que imprime a data atual? posta o seu codigo completo, pois talvez vc esteja se confundindo e alterando a data do objeto.
O código que voce postou é o mesmo.
O erro a acontece qdo eu mudo de vencimento.add(Calendar.DAY_OF_MONTH, 10); para vencimento.add(Calendar.DAY_OF_MONTH, inteiro); .
Mas o código completo é:
public class RelPrazos extends JFrame{
private Date data1, data2;
GregorianCalendar data;
GregorianCalendar vencimento = new GregorianCalendar();
String nome, medida;
GregorianCalendar hoje = new GregorianCalendar();
GregorianCalendar c = new GregorianCalendar();
SimpleDateFormat formatadorBr = new SimpleDateFormat("dd/MM/yyyy");
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
public RelPrazos(MysqlQuery q) throws InstantiationException, ClassNotFoundException, IllegalAccessException, SQLException{
super(“Relatóriorio de Prazos”);
final DefaultTableModel modelo = new DefaultTableModel();
JTable tabelaP = new JTable(modelo);
JTableHeader titulos = tabelaP.getTableHeader();
titulos.setBackground(Color.LIGHT_GRAY);
MysqlQuery q1 = q;
// Cria duas colunas
String nom = "Nome";
String meD = "Medida";
String dtI = "Data Internação";
String ven = "Vencimento";
modelo.addColumn(nom);
modelo.addColumn(meD);
modelo.addColumn(dtI);
modelo.addColumn(ven);
Font font = tabelaP.getFont().deriveFont(Font.BOLD);
tabelaP.getColumn(ven).setCellRenderer(new FontRenderer(font));
tabelaP.getColumn(dtI).setCellRenderer(new FontRenderer(font));
tabelaP.getColumnModel().getColumn(0).setPreferredWidth(370);
tabelaP.getColumnModel().getColumn(1).setPreferredWidth(260);
tabelaP.getColumnModel().getColumn(2).setPreferredWidth(140);
tabelaP.getColumnModel().getColumn(3).setPreferredWidth(140);
data1 = hoje.getTime();
q.open("select * from processos");
q.last();
do{
String non = q.fieldbyname("codP");
String med = q.fieldbyname("codM");
String datInt = q.fieldbyname("dataInt");
String d1 = datInt;
String d = d1.substring(8, 10);
int dia = Integer.parseInt(d);
String m = d1.substring(5, 7);
int mes = Integer.parseInt(m);
String a = d1.substring(0, 4);
int ano = Integer.parseInt(a);
data = new GregorianCalendar(ano, (mes - 1), dia); //20/09/2007
data2 = data.getTime();
double diffDias = Math.floor((data1.getTime() - data2.getTime()) / 1000.0 / 86400.00);
double val = diffDias;
int inteiro = (int) (val);
String inteiroS = Integer.toString(inteiro);
if (inteiroS.length() > 3);
{
inteiroS = Insere(inteiroS);
}
double resto = (val - inteiro);
String cond = (inteiroS + " dias de condenção (" + calculaData(data1, data2) + ")");
vencimento = data;
System.out.print(vencimento.getTime());
vencimento.add(Calendar.DAY_OF_MONTH, inteiro);
System.out.println(" <=> " + vencimento.getTime() + " <=> " + inteiro);
datInt = formataData(datInt);
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/infancia?user=root&password=");
Statement stmt = (Statement) conn.createStatement();
String query = "select * from pessoas where codigo = '" + non + "'";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
nome = rs.getString("nome");
}
String query1 = "select * from medidas where codigo = '" + med + "'";
ResultSet rs1 = stmt.executeQuery(query1);
while (rs1.next()) {
medida = rs1.getString("medida");
}
modelo.addRow(
new Object[]{
nome,
medida,
datInt,
formatadorBr.format(data.getTime())
}
);
}while (q.prev());
tabelaP.setPreferredScrollableViewportSize(new Dimension(700, 450));
Container d = getContentPane();
d.setLayout(new FlowLayout());
JScrollPane scrollPane = new JScrollPane(tabelaP);
d.add(scrollPane);
setSize(730, 520);
setVisible(true);
da certo, porém eu preciso receber o resultado de um cálculo q é este:
double diffDias = Math.floor((data1.getTime() - data2.getTime()) / 1000.0 / 86400.00);
double val = diffDias;
int inteiro = (int) val;
Quando chega nesse linha:
vencimento.add(Calendar.DAY_OF_MONTH, inteiro);
no primeiro caso “inteiro = 10” da certinho, mas da forma que eu preciso ao invés de calcular, somar os dias(inteiro) a data que está em vencimento, vencimento fica com a data atual (do dia)