将字符串转换为日期 - 结果不准确

时间:2013-08-18 23:25:52

标签: java android date calendar

我有一个如下所示的字符串: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个月 - 超出了我的误差容限。谁能看到我错过的东西?

谢谢!

1 个答案:

答案 0 :(得分:3)

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