Otrzymuję najdziwniejszy błąd, gdy próbuję analizować ciąg jako kalendarz. Wygląda na to, że przesłania on obiekt Date, którego używam do ustawienia czasu kalendarza wyników. Błąd jest dość niespójny (lub nie widzę w nim logiki). Czy ktoś może wskazać, co robię źle?Uzyskiwanie niepoprawnych danych podczas korzystania z 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;
}
}
Wyjście jest:
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
Obie odpowiedzi były bardzo przydatne, to jeden z bardziej jaśnieje światło na podstawowy problem. Sprawdzałem złą dokumentację. – Tegi
właśnie uratowałeś mnie od kilku godzin bezowocnych poszukiwań w Internecie! dziękuję – KoW
Jaka jest dokładnie różnica między * rok * i * rok tygodniowy *? Dokumentacja jest nieco skąpa w tym rozróżnieniu (podobnie jak dokumentacja kalendarza). – tytk