我有一个看起来像这样的字符串:2013-08-18我需要将此字符串转换为可以与另一个Date进行比较的东西,以查看两者之间相隔了多少天。我想出了以下代码,将其转换为Calendar类型,这就是我的其他变量所在的类型。但是,我得到的结果不一致,我无法理解。这是我的代码:

String prefDate = prefs.getString("last_update", "2000-01-01");
System.err.println("oncreate prefDate: " + prefDate);

SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");
Date date = new Date();
date = df.parse(prefDate);
Calendar last_update = Calendar.getInstance();
last_update.setTime(date);

Date verify = new Date(last_update.getTimeInMillis());
System.err.println("verify: " + verify);


输出看起来像这样:

oncreate prefDate: 2013-08-18

verify: Fri Jan 18 00:08:00 MST 2013

我并不特别担心两个输出之间的格式差异。但是,明显的错误是所有这些结果都在8个月后出现偏差-超出了我的容错范围。谁能看到我想念的东西?

谢谢!

最佳答案

yyyy-mm-dd更改为yyyy-MM-dd并参考SimpleDateFormat文档以获取详细信息

10-07 20:59