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 una instancia de la clase java.sql.Date
. Los métodos que obtienen los valores de java.sql.Date
están en desuso, y el siguiente código muestra por qué no pueden ser utilizados:¿Cómo convierto un objeto java.sql.Date en un GregorianCalendar?
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, lo que demuestra que el mes y el año no se devuelven correctamente desde el obsoleto getYear()
y getMonth()
métodos de Date
:
Año: 111
Mes: 11
Día: 25
2011-12-25
Jue Dic 25 de 00:00:00 EST 111
Ya que no puedo utilizar el constructor que he intentado antes, y no hay GregorianCalendar
constructor que sólo se necesita un Date
, ¿cómo puedo convertir un objeto en un java.sql.Date
GregorianCalendar
?
De donde vino rs.getDate()? –
sorry - rs es el nombre de variable que siempre le doy a los objetos ResultSet; solo está allí para representar una instancia de java.sql.Date que ya ha creado una instancia. – DaveH
No es realmente la respuesta más específica, pero +1 para seguir algunos estándares que hacen que este sea el código exacto que estaba buscando. – KjetilNordin