转换日期类型为字符串: public static String calendarToYMD(Calendar inDate){ StringBuffer ret = new StringBuffer (8); ret.append (inDate.get(Calendar.YEAR)); if ( inDate.get(Calendar.MONTH)+1<10) ret.append('0'); ret.append ((inDate.get(Calendar.MONTH)+1)); if (inDate.get(Calendar.DAY_OF_MONTH)<10) ret.append ('0'); ret.append(inDate.get(Calendar.DAY_OF_MONTH)); return ret.toString(); } 转换字符串为日期类型: public static Calendar YMDToCalendar(String inDate) throws Exception{ Calendar ret = Calendar.getInstance(); if (inDate.length() < 8) throw new Exception ( "Invalid date format '" + inDate + "'" ); int year = Integer.parseInt(inDate.substring(0,4)); int month = Integer.parseInt(inDate.substring ( 4, 6 ) ); int day = Integer.parseInt(inDate.substring ( 6, 8 ) );
if (day<1||day>31||month<1||month>12) throw new Exception ( "Invalid date '" + inDate + "'");
if (inDate.length()>8 ) { if (inDate.charAt(8) == 'T'){ try { int hour = Integer.parseInt ( inDate.substring ( 9, 11 ) ); int minute = Integer.parseInt ( inDate.substring ( 11, 13 ) ); int second = Integer.parseInt ( inDate.substring ( 13, 15 ) ); ret.set ( year, month-1, day, hour, minute, second );//TODO } catch ( NumberFormatException nef ) { throw new Exception ( "Invalid time in date string '" +inDate+"'"); } } else {
throw new Exception ( "Invalid date format '" + inDate+"'"); } } else { ret.set(year, month-1, day); } return ret; } 在上述的转换过程中需要注意的一个问题是,如果我们把日期转化为了字符串则,MONTH信息需要在初始值的基础上+1 而在相反的过程中,我们则需要-1,只有这样处理后我们在使用cal.getTime()方法返回的时间才能和经过转化的String 对象对应上。