Viene visualizzato l'errore più strano quando si tenta di analizzare una stringa come calendario. Sembra che danneggi l'oggetto Date che utilizzo per impostare l'ora del calendario dei risultati. L'errore è abbastanza incoerente (o non vedo alcuna logica in esso). Qualcuno può far notare cosa potrei fare di sbagliato?Ottenere dati errati quando si utilizza SimpleDateFormat.parse()
public class caltest{
public static final SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss.SSS");
public static void main(String[] args) {
String date1 = "1992-03-11 12:00:12.123";
String date2 = "1993-03-11 12:00:12.123";
String date3 = "1994-03-11 12:00:12.123";
String date4 = "1995-03-11 12:00:12.123";
parseStringAsCalendar(date1);
parseStringAsCalendar(date2);
parseStringAsCalendar(date3);
parseStringAsCalendar(date4);
}
public static String calendarToString(Calendar cal) {
return sdf.format(cal.getTime());
}
public static Calendar parseStringAsCalendar(String s) {
Date time = null;
try {
time = sdf.parse(s);
} catch (ParseException e) {
System.out.println("Exception");
e.printStackTrace();
}
System.out.println(time.toString());
GregorianCalendar ret = new GregorianCalendar();
ret.setTime(time);
return ret;
}
}
L'output è:
Sun Dec 29 12:00:12 CET 1991
Sun Dec 27 12:00:12 CET 1992
Sun Dec 26 12:00:12 CET 1993
Sun Jan 01 12:00:12 CET 1995
Entrambe le risposte erano molto utile, questo brilla più di una luce sul problema sottostante. Stavo controllando la documentazione sbagliata. – Tegi
mi hai appena salvato da parecchie ore di ricerca infruttuosa su internet! grazie – KoW
Qual è esattamente la differenza tra * anno * e * anno settimana *? La documentazione è un po 'scarna su questa distinzione (come la documentazione per Calendar). – tytk