我不知道他时间是什么格式,它String可能是1985-8-1或者1985-12或者是1985,我有全能什么方法将string转换成date

解决方案 »

  1.   

    java.text.SimpleDateFormate这个类的用法你去看看吧。
      

  2.   

    java.util.Date date = new SimpleDateFormat("yyyy-MM-dd").parse(xxx);
    java.sql.Date create = new java.sql.Date(date.getTime());
      

  3.   

    java.util.Date date = new SimpleDateFormat("yyyy-MM-dd").parse(xxx); //格式化要转个的格式
    java.sql.Date create = new java.sql.Date(date.getTime()); //然后根据根式生成日期
      

  4.   

    那确定是这三种格式中的一种么?
    如果可以确定,那就判断split("-")后的数组长度,根据长度可以判断是那种格式,然后再去选择SimpleDateFormat实例化时候的构造参数。
      

  5.   

    不确定,还有可能是1987-09-12,就是我要转换的STRING有很多不可预知性,是从excle里面导来的
      

  6.   


    private static void print(String date) throws Exception{
    //默认的时间格式
    String sign = "-";
    //需要更多的自己添加
    String regex ="[-|:]";
    Matcher m = Pattern.compile(regex).matcher(date);
    int len =0;
    while(m.find()){
    len ++;
    sign = m.group();
    }
    if(len == 1){
    date += sign+"01";
    }
    if(len == 0){
    date += sign+"01"+sign+"01";
    }
    if(len > 2){
    return ;
    }
    parse(date,sign);
    }

    private static void parse(String source, String sign) throws Exception{
    java.util.Date date = new SimpleDateFormat("yyyy"+sign+"MM"+sign+"dd").parse(source); //格式化要转个的格式
    java.sql.Date create = new java.sql.Date(date.getTime()); //然后根据根式生成日期
    System.out.println(create);
    }
    试试这个
      

  7.   

    这种情况找不到全能的办法,
    只能一个一个判断
    不过个人认为只需要三种情况:
    1985
    1985-12 1985-1
    1985-12-11 1985-1-1
    根据这三种情况自己弄simpledateformat转化就行了