我刚开始使用 Java (Android) 并陷入了日期格式问题。我有一个小表格,您可以在其中输入项目名称并在日历上选择开始日期。Startdate 和 Projectname 会自动输入到数据库中,然后预定义的 Tasks 会自动输入到数据库中。
- 任务 1 截止日期为开始日期,
- 任务 2 是 Startdate 加上 x 天 = DueDate2,
- 任务 3 是 DueDate2 加上 x 天 = DueDate3
我现在想出了下面的源代码,除了我的日期格式错误之外,一切正常。出于某种原因,我的格式在 newDateStr 中是正确的,但是当我再次将其解析为日期对象时,格式会发生变化并且不正确。我看不到我的错误,有人可以帮忙吗?
我的理解是:
- 设置输入日期的日期格式(curFormat)
- 设置目标日期格式(postFormater)
- 此时解析您的日期,它是一个字符串,将其转换为日期对象(使用 curFormat)
- 格式化此日期以获得目标日期格式(使用 postFormater),现在它又是一个字符串
- 再次解析它以使其恢复为日历所需的日期
- 使用日历实例,setTime(此处为格式化日期)并添加 x 天
- 格式化日期以获取目标日期格式(使用 postFormater),现在它又是一个字符串
因为我再次需要一个日期对象,所以我必须再次解析它。
// The format of your input date string SimpleDateFormat curFormater = new SimpleDateFormat("MM/dd/yyyy"); // The format of your target date string SimpleDateFormat postFormater = new SimpleDateFormat("dd-MM-yyyy"); // The calendar instance which adds a locale to the date Calendar cal = Calendar.getInstance(); // Parse the string (pro.getStart()) to return a Date object Date dateObj = curFormater.parse(pro.getStart()); // Format the Date dd-MM-yyyy String newDateStr = postFormater.format(dateObj); // Parse the string to return a Date object Date Startdate = postFormater.parse(newDateStr); while (cur.isAfterLast() == false) { Integer delayTime = cur.getInt(cur.getColumnIndex("DelayTime")); if (flag == false) { dateInString = Startdate; flag = true; }else{ cal.setTime(dateInString); // add the extra days cal.add(Calendar.DAY_OF_MONTH, delayTime); // Format the Date dd-MM-yyyy newDateStr = postFormater.format(cal.getTime()); // Parse the string to return a Date object dateInString = postFormater.parse(newDateStr); Log.i("newDateStr Format",newDateStr.toString()); // 29-11-2012 Log.i("dateInString parse",dateInString.toString()); // Thu Nov 29 00:00:00 GMT 2012
我希望有人看到我的错误。非常感谢您提前!