from - ¿Cómo convierto un objeto java.sql.Date en un GregorianCalendar?
date to xmlgregoriancalendar (4)
Prueba esto.
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());
}
}
Pensé que sería capaz de crear un GregorianCalendar
usando el constructor que toma el año, el mes y el día, pero no puedo obtener esos campos de manera confiable de una instancia de la clase java.sql.Date
. Los métodos que obtienen esos valores de java.sql.Date
están en desuso, y el siguiente código muestra por qué no se pueden usar:
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());
}
}
Aquí está la salida, que muestra que el mes y el año no se devuelven correctamente de los métodos getMonth()
getYear()
y getMonth()
de Date
:
Año: 111
Mes: 11
Dia: 25
2011-12-25
Jue 25 de diciembre 00:00:00 EST 111
Ya que no puedo usar el constructor que probé anteriormente, y no hay un constructor GregorianCalendar
que solo tome una Date
, ¿cómo puedo convertir un objeto java.sql.Date
en un GregorianCalendar
?
Tienes que hacer esto en dos pasos. Primero cree un GregorianCalendar
usando el constructor predeterminado, luego establezca la fecha usando el método setTime
(con un nombre confuso).
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());
}
}
Aquí está la salida:
2011-12-25
Dom 25 dic 00:00:00 EST 2011
Utilice setTimeInMillis() :
java.sql.Date date = new java.sql.Date(System.currentTimeMillis());
Calendar cal = new GregorianCalendar();
cal.setTimeInMillis(date.getTime());
Creo que esta es la forma más sencilla.
Voy de memoria, pero has intentado
Calendar cal = GregorianCalendar.getInstance();
cal.setTime(rs.getDate());