今天是2013-02-25,但是为什么此代码返回2013-03-25?将日期转换为日历问题
String currentDate = new SimpleDateFormat("yyyy MM dd hh mm ss").format(new java.util.Date());
System.out.println("current Date "+currentDate);
StringTokenizer token = new StringTokenizer(currentDate);
Calendar cal = Calendar.getInstance();
cal.set(Integer.parseInt(token.nextToken()),
Integer.parseInt(token.nextToken()),
Integer.parseInt(token.nextToken()),
Integer.parseInt(token.nextToken()),
Integer.parseInt(token.nextToken()),
Integer.parseInt(token.nextToken()));
String calenderDate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(cal.getTime());
System.out.println("calender date "+calenderDate);
cal.add(Calendar.MONTH, -1); // set to one month ago
String pastDate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(cal.getTime());
System.out.println("past Date "+pastDate);
出把
当前日期2013 02 25 04 56 26
压延日期2013年3月25日4点56分26秒
过去的日期2013年2月25日04:56:26
看看日历日期没有过去的日期,即使过去的日期不正确,我已经扣除了一个月,但它仍然2013-02-25。设置方法中的 – solid 2013-02-25 14:07:54
执行'Integer.parseInt(token.nextToken()) - 1'你在哪里通过月份。正如大家所说,日历的月份索引为0。因此,1月份期望0不等于1,依此类推。 – 2013-02-25 14:13:21
你和其他人是绝对正确的,非常感谢。 – solid 2013-02-25 14:17:56