Bom dia!!!
Quando puxo uma data armazenada na base de dados MySQL, ao exibi-la em um TableView ou DatePicker, a data fica com 1 dia anterior ao que está armazenado no Database.
Já tentei diversas modificações no código, mas este problema em específico nunca resolve.
Alguém sabe como corrigir isto?
Obrigado desde já!
Segue o código simplificado.
Classe Contratos:
package modelo; import java.sql.Date; public class Contratos implements Comparable<Contratos>{ private ObjectProperty <LocalDate> data_inicio; public Contratos(LocalDate data_inicio){> this.data_inicio = new SimpleObjectProperty<>(data_inicio); } public LocalDate getData_inicio() { return data_inicio.get(); } public void setData_inicio(LocalDate data_inicio) { this.data_inicio = new SimpleObjectProperty<>(data_inicio); } public ObjectProperty<LocalDate> data_inicioProperty(){ return data_inicio; } public static void buscarDados(Connection connection, ObservableList<Contratos> lista){ try {Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery( "SELECT datai_cont FROM odinsgat.contratos;" ); while(rs.next()){ lista.add( new Contratos ( rs.getDate("datai_cont").toLocalDate()) ); } } catch (SQLException ex) { Logger.getLogger(Tipos.class.getName()).log(Level.SEVERE, null, ex); } }
Classe AdcContratosController:
package Adc; public class AdcContratosController implements Initializable { private int contId; private ObservableList<Contratos> listaContratos; @FXML private DatePicker dtpInicioCont; @FXML private TableView <Contratos> tv_cont_td; @FXML private TableColumn <Contratos, LocalDate> tc_cont_datai; @Override public void initialize(URL url, ResourceBundle rb) { //------- Populando TableView tc_cont_datai.setCellValueFactory (cellData -> cellData.getValue().data_inicioProperty()); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); tc_cont_datai.setCellFactory(tc -> { return new TableCell<Contratos, LocalDate>() { @Override protected void updateItem(LocalDate date, boolean empty) { super.updateItem(date, empty); if (date == null || empty) { setText(null); } else { setText(formatter.format(date)); } } }; }); } }
Dados armazenados:
`
Dados Exibidos:
`