当我试图将字符串解析为日历时,出现了最奇怪的错误。 它似乎弄乱了我用来设置结果日历时间的Date对象。这个错误很不一致(或者我没有看到它的逻辑)。任何人都可以指出我可能做错了什么?使用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;
}
}
输出是:
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
这两个答案都非常有用,这一个照在潜在的问题更多的是光的。我正在检查错误的文档。 – Tegi 2012-03-22 23:44:22
你刚刚在互联网上从几个小时的无果搜索中拯救了我!谢谢 – KoW 2013-11-13 13:47:02
* year *和* week year *之间的区别究竟是什么?该文档对于这个区别有点稀疏(就像Calendar的文档一样)。 – tytk 2015-07-23 19:04:07