Ho pensato di creare un GregorianCalendar
utilizzando il costruttore che prende l'anno, il mese e il giorno, ma non riesco ad ottenere in modo affidabile quei campi da un'istanza della classe java.sql.Date
. I metodi che ottengono quei valori da java.sql.Date
sono obsolete, e il seguente codice mostra il motivo per cui non possono essere utilizzati:Come si converte un oggetto java.sql.Date in 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());
}
}
ecco l'output, che mostra che il mese e l'anno non vengono restituiti correttamente dal deprecato getYear()
e getMonth()
metodi di Date
:
Anno: 111
Mese: 11
Giorno: 25
2011-12-25
mar nov 25 00:00:00 EST 111
Dal momento che non è possibile utilizzare il costruttore che ho provato sopra, e non c'è GregorianCalendar
costruttore che richiede solo un Date
, come posso convertire un oggetto in una java.sql.Date
GregorianCalendar
?
Da dove proviene rs.getDate()? –
sorry - rs è il nome della variabile che attribuisco sempre agli oggetti ResultSet - è lì solo per rappresentare un'istanza java.sql.Date che hai già istanziato. – DaveH
Non proprio la risposta più specifica, ma +1 per seguire alcuni standard che hanno reso questo il codice esatto che stavo cercando. – KjetilNordin