Je pensais pouvoir créer un GregorianCalendar
en utilisant le constructeur qui prend l'année, le mois et le jour, mais je ne peux pas obtenir ces champs de manière fiable à partir d'une instance de la Java.sql.Date
classe. Les méthodes qui obtiennent ces valeurs de Java.sql.Date
Sont obsolètes, et le code suivant montre pourquoi elles ne peuvent pas être utilisées:
import Java.sql.Date;
import Java.util.Calendar;
import Java.util.GregorianCalendar;
public class DateTester {
public static void main(String[] args) {
Date date = Date.valueOf("2011-12-25");
System.out.println("Year: " + date.getYear());
System.out.println("Month: " + date.getMonth());
System.out.println("Day: " + date.getDate());
System.out.println(date);
Calendar cal = new GregorianCalendar(date.getYear(), date.getMonth(), date.getDate());
System.out.println(cal.getTime());
}
}
Voici la sortie, montrant que le mois et l'année ne sont pas renvoyés correctement à partir des méthodes getYear()
et getMonth()
obsolètes de Date
:
Année: 111
Mois: 11
Jour: 25
2011-12-25
Jeu 25 déc 00:00:00 EST 111
Étant donné que je ne peux pas utiliser le constructeur que j'ai essayé ci-dessus et qu'il n'y a pas de constructeur GregorianCalendar
qui prend simplement un Date
, comment puis-je convertir un objet Java.sql.Date
En un GregorianCalendar
?
Vous devez le faire en deux étapes. Créez d'abord un GregorianCalendar
à l'aide du constructeur par défaut, puis définissez la date à l'aide de la méthode (nommée avec confusion) setTime
.
import Java.sql.Date;
import Java.util.Calendar;
import Java.util.GregorianCalendar;
public class DateTester {
public static void main(String[] args) {
Date date = Date.valueOf("2011-12-25");
System.out.println(date);
Calendar cal = new GregorianCalendar();
cal.setTime(date);
System.out.println(cal.getTime());
}
}
Voici la sortie:
2011-12-25
Dim 25 déc 00:00:00 EST 2011
Je vais de mémoire, mais as-tu essayé
Calendar cal = GregorianCalendar.getInstance();
cal.setTime(rs.getDate());
Essaye ça.
import Java.sql.Date;
import Java.util.Calendar;
import Java.util.GregorianCalendar;
public class DateTester {
public static void main(String[] args) {
Date date = Date.valueOf("2011-12-25");
System.out.println(date);
Calendar cal = new GregorianCalendar();
cal.setTime(date);
System.out.println(cal.getTime());
}
}
Utilisez setTimeInMillis () :
Java.sql.Date date = new Java.sql.Date(System.currentTimeMillis());
Calendar cal = new GregorianCalendar();
cal.setTimeInMillis(date.getTime());
Je pense que c'est la manière la plus simple.