gregoriancalendar gregorian from convertir java date calendar gregorian-calendar

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());