现Excel表中有如下格式数据
2004-04-1
2004-4-01
04-4-1需要转化为标准的 date类型 2004-04-01如何操作?

解决方案 »

  1.   

    2004-04-1
    2004-4-01
    04-4-1字符串不统一,估计的重新格式化一些你的字符串成为统一的格式先import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class Test10 { /**
     * @param args
     * @author sunstar
     * @date 2012-7-24 上午10:18:11
     */
    public static void main(String[] args) { String[] arrs = {"2004-04-1", "2004-4-01", "04-4-1"} ;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd" ) ;
    Date[] date = new Date[arrs.length] ;
    for (int i = 0; i < arrs.length; i++){
    arrs[i] = formatYear(arrs[i],4, "20") ;
    try {
    date[i] = sdf.parse(arrs[i]) ;
    } catch (ParseException e) {
    e.printStackTrace();
    }

    }
    for (int i = 0; i < arrs.length; i++){
    System.out.println(arrs[i] + " -- " + sdf.format(date[i])) ;
    }
    }

    /**
     * 
     * @param dataStr 原来的日期字符串,可能为2004-4-1 ,也可能是04-4-1
     * @param len  年份的长度
     * @param str  如果年份长度不够则在前面加上的字符串,比如1、年份:04 ,长度为4, str ="20" ,则变为2004
     * 2、如果需要将2004-04-01格式化为04-04-01则 长度为2 即可
     * @return
     * @author sunstar
     * @date 2012-7-24 上午10:27:57
     */
    public static String formatYear(String dataStr, int len, String str){

    String[] arrs = dataStr.split("-") ;
    if (arrs[0].length() <len){
    arrs[0] = str + arrs[0] ;
    }else if(arrs[0].length() > len){
    arrs[0] = arrs[0].substring(arrs[0].length() -len) ;
    }
    return arrs[0] + "-" + arrs[1]+ "-" + arrs[2];
    }
    }2004-04-1 -- 2004-04-01
    2004-4-01 -- 2004-04-01
    2004-4-1 -- 2004-04-01
      

  2.   

    这种date,应该还是字符串,不是标准Date
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    String s1 = "2004-04-1";
    String s2 = "2004-4-01";
    System.out.println(sdf.format(sdf.parse(s1)));
    System.out.println(sdf.format(sdf.parse(s2)));前两个能弄,但后一种,只是04-4-1。怎么能判断是2004-04-01,还是1904-04-04呢?这也太自动化了,写04就知道是2004?前面要手动加“20”才行。