[Java]Date diminuite di un giorno su db MySQL

Andreawave

Nuovo Utente
27 Gen 2014
11
0
1
Ciao a tutti.
Ho il seguente problema:
Sto facendo una java web application molto semplice in cui memorizzo nel database i dati relativi a una persona: nome, cognome e data di nascita.
L'applicazione sembra funzionare tranne per il fatto che, inserendo una data (ad esempio 07/03/2019) mi ritrovo sul db tale data diminuita di un giorno, ovvero 2019-03-06. Com'è possibile?
Potreste dirmi come fixare tale problema?
Di seguito il codice:

Il bean:
Codice:
import java.io.Serializable;
import java.sql.Date;

public class Persona implements Serializable {
 
   private int idPersona;
   private String nome;
   private String cognome;
   private Date dataNascita;
 
   public Persona() {
       super();

   }

   public Persona(String nome, String cognome, Date dataNascita) {
       super();
       this.nome = nome;
       this.cognome = cognome;
       this.dataNascita = dataNascita;
   }

   public Persona(int idPersona, String nome, String cognome, Date dataNascita) {
       super();
       this.idPersona = idPersona;
       this.nome = nome;
       this.cognome = cognome;
       this.dataNascita = dataNascita;
   }

   public int getIdPersona() {
       return idPersona;
   }

   public void setIdPersona(int idPersona) {
       this.idPersona = idPersona;
   }

   public String getNome() {
       return nome;
   }

   public void setNome(String nome) {
       this.nome = nome;
   }

   public String getCognome() {
       return cognome;
   }

   public void setCognome(String cognome) {
       this.cognome = cognome;
   }

   public Date getDataNascita() {
       return dataNascita;
   }

   public void setDataNascita(Date dataNascita) {
       this.dataNascita = dataNascita;
   }

}
La servlet:
Codice:
package servlet;

import java.io.IOException;
import java.sql.Date;
import java.sql.SQLException;
import java.text.ParseException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import bean.Persona;
import dao.ProvaDao;
import utility.ManipolazioneDate;

/**
 * Servlet implementation class Inserimento
 */
@WebServlet("/Inserimento")
public class Inserimento extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * Default constructor.
     */
    public Inserimento() {
    
      
    }

    /**
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      
        String nome = request.getParameter("nome");
        String cognome = request.getParameter("cognome");
        String dataNascita = request.getParameter("dataNascita");
        Date dataN = null;
        try {
            dataN = (Date) ManipolazioneDate.convertiData(dataNascita);
        } catch (ParseException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
      
        Persona p = new Persona(nome, cognome, dataN);
        System.out.println(p.getNome());
        System.out.println(p.getCognome());
        System.out.println(p.getDataNascita());
      
        try{
            ProvaDao.registraPersona(p);
        }catch(SQLException e){
            e.printStackTrace();
        }
    }

}

La classe che mi permette di convertire la data dal formato stringa al formato java.sql.Date
Codice:
package utility;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ManipolazioneDate {
 
    public static Date convertiData(String data) throws ParseException{
      
        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        Date parser = format.parse(data);
        java.sql.Date dataSql = new java.sql.Date(parser.getTime());
      
        return dataSql;
      
    }

}


La Jsp con il form per l'inserimento dei dati
HTML:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <div align="center">
        <form action="/Prova/Inserimento" method="get">
            <p>Nome</p>
            <input type="text" value="" name="nome">
            <br>
            <p>Cognome</p>
            <input type="text" value"" name="cognome">
            <br>
            <p>Data di nascita</p>
            <input type="text" value="" name="dataNascita">
            <br>
            <input type="submit" value="Invia">
          
        </form>
    </div>
</body>
</html>
Il Dao
Codice:
package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import bean.Persona;
import utility.Connessione;

public class ProvaDao {
    
    public static void registraPersona(Persona persona) throws SQLException{
        
        Connection conn = Connessione.getConnection();
        PreparedStatement ps = null;

        
        String ins = "insert into prova2.persona(nome, cognome, dataNascita) values(?,?,?)";
        
        try{
            
            ps = conn.prepareStatement(ins);
            
            ps.setString(1, persona.getNome());
            ps.setString(2, persona.getCognome());
            ps.setDate(3, persona.getDataNascita());
            
            ps.executeUpdate();
            System.out.println("Persona inserita");
            
        }catch(SQLException e){
            
            System.out.println(e.getMessage());
            System.out.println("Errore nell'inserimento");
            
        }finally{
            
            if(ps != null){
                ps.close();
            }
            
            if(conn != null){
                conn.close();
            }
        }
    }

}
 
Ultima modifica: