web-dev-qa-db-fra.com

Comment convertir Calendar en Java.sql.Date en Java?

Calendar cal;
String sql = "INSERT INTO ttable (dt) values (?);"
//dt is a dateTime field in ttable

PreparedStatement stmt = connection.prepareStatement(sql);

stmt = setDate(1,cal); //not working

stmt.execute();
stmt.close();

Je voudrais convertir cal en type Date à insérer dans un tableau.

56
Alex

Il existe une méthode getTime() (sans savoir pourquoi elle ne s'appelle pas getDate).

Edit: Vous venez de réaliser que vous avez besoin d'un fichier Java.sql.Date. Une des réponses qui utilise cal.getTimeInMillis() est ce dont vous avez besoin.

117
Jim

Avez-vous essayé cal.getTime()? Cela obtient la représentation de la date.

Vous voudrez peut-être aussi regarder le javadoc.

30
Kurt Du Bois

Utilisez stmt.setDate(1, new Java.sql.Date(cal.getTimeInMillis()))

24
James Jithin

La conversion est facile, régler la date et l'heure est un peu délicat. Voici un exemple:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2000);
cal.set(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 1);
cal.set(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
stmt.setDate(1, new Java.sql.Date(cal.getTimeInMillis()));
10
rebeliagamer

Voici un moyen simple de convertir les valeurs de Calendar en Date instances.

Calendar C = new GregorianCalendar(1993,9,21);

Date DD = C.getTime();

System.out.println(DD);
6
David Ophiuchus

stmt.setDate(1, new Java.sql.Date(cal.getTime().getTime()));

3
Steve Pitchers

J'ai trouvé ce code fonctionne:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd HH:mm:ss");    
Calendar calendar = new GregorianCalendar(2013,0,31);
System.out.println(sdf.format(calendar.getTime()));  

vous pouvez trouver le reste dans ce tutoriel:
http://www.mkyong.com/Java/java-date-and-calendar-examples/

1
Orit