知道怎么把String转换成DATE 声明String一定说Date的但不知道传进来的
样式比如有可能说yyyy-mm-dd有可能说yyyy-MM-dd HH-mm-dd等等样式各种各样
  但一定是data的

解决方案 »

  1.   

    把所有可能的样式都列出来,然后构造不同的SimpleDateFormat,然后再parse你这个字符串
      

  2.   

    在不确定时间格式的情况下,这个问题无解,谁知道哪个位置上具体是什么意思,必须要有个规则。
    如果是可能有几种模式,而几种模式是可以枚举的话,那么就可以通过不同的SimpleDateFormat进行分别匹配,返回匹配的那个值
      

  3.   

    我是在做一个外国的邮件分析,但是他的时间格式各式各样,我现在还没有完全的可能出现的各式看看有没有人会把String转成Date,javamail中有个getSendDate但是他的时区老是在+0800如果发送时间不是在+0800而是在-0400的话时间就不对了看看有高手告诉我怎么解决吗
      

  4.   

    http://msdn.microsoft.com/zh-cn/goglobal/bb688124.aspx
    看看这篇文章你就知道了,单凭一个日期形式的字符串判断他的实际日期有时候是错的,就比如短日期来说
    英语是月日年,西班牙语是日月年,就比如 11/12/2011,你能说是11月12号还是12月11号呢
      

  5.   

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    Date date = format.parse("2000-3-3 23:23:23");
      

  6.   

    自己写一个工具类,传进来的参数是string类型的时间和要返回date类型的格式,然后根据这两个参数返回相应的date类型的值。这个方法应该会很常用,所以建议写一个工具类
      

  7.   

    /**
         * 通过String类型的日期获得Date类型的日期
         * 将字符串日子转换为Date类型的日期
         * @param date
         * @return [参数说明]
         * 
         * @return Date [返回类型说明]
         * @exception throws [违例类型] [违例说明]
         * @see [类、类#方法、类#成员]
         */
        public static Date getDateByString(String datestr,String formater){
            Date date = null;
            try
            {   
                if(Global.isEmpty(datestr)){
                    return null;
                }
                else if(datestr.trim().length() == DateConverter.YYYYMMDD.length()){
                    datestr = datestr.substring(0, 4)+"-"+datestr.substring(4, 6)+"-"+datestr.substring(6);
                }
                if(!Global.isEmpty(formater)){
                    formt.applyPattern(formater);
                    date = formt.parse(datestr);
                }
            }
            catch (ParseException e)
            {
            }
            return date;
        }
        public static Date toDate(String datetime)
        {
            
            Calendar cal = Calendar.getInstance();
            
            int year = Calendar.YEAR, month = Calendar.MONTH, day = Calendar.DAY_OF_MONTH;
            
            if (null != datetime && !"".equals(datetime))
            {
                if (datetime.indexOf("-") > 0)
                {
                    String dates[] = datetime.split("-");
                    
                    if (dates.length == 3)
                    {
                        year = Integer.parseInt(dates[0]);
                        month = Integer.parseInt(dates[1]) - 1;
                        day = Integer.parseInt(dates[2]);
                    }
                }
            }
          
            cal.set(year, month, day);
            
            return cal.getTime();
            
        }
      

  8.   

    private static SimpleDateFormat formt = new SimpleDateFormat();
        
        /**
         * yyyy-MM-dd年-月-日
         */
        public static final String  YYYY_MM_DD = "yyyy-MM-dd";
        
        /**
         * yyyyMMdd 年月日
         */
        public static final String YYYYMMDD = "yyyyMMdd";
        
        /**
         * yyyyMMWW 年月 周
         */
        public static final String YYYYMMWW = "yyyyMMWW";
        
        /**
         * yyyy-MM 年-月
         */
        public static final String YYYY_MM = "yyyy-MM";
        
        /**
         * yyyyMM 年月
         */
        public static final String YYYYMM = "yyyyMM";
        
        /**
         * yyyy.MM.dd
         */
        public static final String YYYYdMMdDD = "yyyy.MM.dd";
        
        /**
         * yyyy-MM-dd HH:mm:ss
         */
        public static final String Y_M_DHpMpS = "yyyy-MM-dd HH:mm:ss";
        
        /**
         * yyyy-MM 第d周
         */
        public static final String YYYY_MM_WW_CN = "yyyy-MM 第W周";
        
        /**
         * yyyy-MM d
         */
        public static final String YYYY_MM_WW_EN = "yyyy-MM d";
      

  9.   

    http://blog.sina.com.cn/s/blog_44d3ec2b0100em1z.html
    只能把所有格式列出来,一种一种判断!
      

  10.   

    不行,首先要知道yyyy在那个位置你才能去截取但没个yyyy都不同。有的在第一个有的在最后,你怎么知道yyyy在那又没有自动匹配的方式