Bom dia,
sou novo em programação e estou com dificuldades para desenvolver um código para somar datas.
Estou desenvolvendo um programa para minha empresa. Eu irei lançar uma data num campo jDateChooser (Data de moldagem), e lançarei um valor em um jTextField (Idade de rompimento). Preciso que esse valor seja somado a data e me retorne o resultado em um jFormattedTextField (Data de rompimento) em formato de data. Alguém poderia me ajudar?
Obrigado.
Novos em programação não trabalham com datas. Novos em programação trabalham com estruturas básicas e com conceitos de orientação a objetos. Se já passou disso, não é mais novo.
Isso contradiz o que escreveu antes. Novos em programação não desenvolvem sistemas, apenas ajudam em partes nas quais a complexidade é menor.
E? Cadê o código? Cadê os detalhes do que está usando no projeto?
Só é possível ajudar quem quer se ajudar, entende? Ou você dá informações relevantes (“novo em programação” não é relevante) ou não temos condições de orientar a respeito de qual a melhor maneira de resolvere o problema.
No caso, este valor que vc vai lançar é a quantidade de anos, né? Estou considerando que sim.
Eu fiz um exemplo que pode ser útil (estou considerando que vc está usando esta lib)
import com.toedter.calendar.JDateChooser;
import javax.swing.*;
import java.awt.*;
import java.time.LocalDateTime;
import java.time.ZoneId;
public class Main {
public static void main(String[] args){
JFrame frame = new JFrame("Test");
JDateChooser chooser = new JDateChooser();
JButton button = new JButton("Calcular");
JLabel label = new JLabel();
JTextField input = new JTextField();
button.addActionListener(e -> {
if (chooser.getDate() != null && !input.getText().isEmpty()) {
LocalDateTime localDateTime = chooser.getDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
int valor = Integer.parseInt(input.getText());
label.setText(localDateTime.plusYears(valor).toString());
}
});
frame.setLayout(new GridLayout(4, 1));
frame.add(chooser);
frame.add(input);
frame.add(button);
frame.add(label);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
Somar Datas? Explique?
Porque data é um dado temporal como seria essa soma, pode explicar?
Na verdade irei acrescentar dias. É um sistema para registar corpos de prova de concreto do meu laboratório. Nele nós inserimos a data que o corpo de prova foi moldado e a idade que ele será rompido. Em seguida o resultado da soma da data de moldagem + idade de rompimento terá que me trazer a data de rompimento, que será o dia em que o corpo de prova será ensaiado.
exemplo:
Data de moldagem: 01/05/2019
Idade de rompimento: 28 dias
Data de rompimento: 29/05/2019.
Obrigado
Pode fazer da seguinte forma:
import java.time.LocalDate;
public class Main {
public static void main(String ... args) {
LocalDate a = LocalDate.of(2019, 05, 01); //Uma data base qualquer
LocalDate b = a.plusDays(28); //Adiciona a quantidade de dias desejada
System.out.println(b); //Saída: 2019-05-29
}
}
Se for usar o código que mostrei, é só substituir o plusYears por plusDays.
Você pode utilizar também a biblioteca do apache, apache.commons.lang3 que vai te ajudar não só na data mas também em vários utilitários disponíveis.
Tem a classe DateUtils, que possui uma infinidade de métodos, inclusive o que você procura como o addDays, addYear etc…
> Primeiro parâmetro a data e o segundo a quantidade de dias que deseja
> Date novaData = DateUtils.addDays(new Date(), 5);
Para baixar ela você encontra no MVN repository.