java中的日期转换(字符串到java.sql.Date)

问题描述:

在我的代码中,我必须将字符串值(输入)转换为java.sql.Date format。我面临的问题是,输入日期格式未定义,并且可能是任何格式。例如,输入字符串可能是"Jan 10,2014""01-10-2014""2014/Jan/10"。所以现在我需要将这个输入值转换成java.sql.Date(DD/MMMM/YYYY)。有没有办法做这种转换?java中的日期转换(字符串到java.sql.Date)

+0

为什么我们得到这么多的日期/串转换问题都没有在谷歌搜索???搜索'SimpleDateFormat' – sidgate

+2

IMO您将需要指定您想要处理的所有日期格式,然后尝试分析每个日期格式。 –

+3

出于兴趣,你怎么知道2014年10月1日是2014年10月1日,而不是2014年1月10日。如果你能影响你输入的数据格式,现在是时候这样做了,如果日期格式输入不受限制,您无法将其明确转换为日期。 – DaveH

这是不可能的。您可以不区分dd/MM/yyyyMM/dd/yyyy

你真的需要知道格式,否则你的程序可能不会按照你想要的方式行事。

尝试使用SimpledateFormat的上述所有模式的List

事情是这样的:

SimpleDateFormat format1 = new SimpleDateFormat("MMM dd,yyyy"); 
    SimpleDateFormat format2 = new SimpleDateFormat("MM-dd-yyyy"); 
    SimpleDateFormat format3 = new SimpleDateFormat("yyyy/MMM/dd"); 

    // Note: be sure about the format, or else you may end up assigning incorrect values 
    List<DateFormat> list = new ArrayList<DateFormat>(); 
    list.add(format1); 
    list.add(format2); 
    list.add(format3); 

    for (DateFormat format : list) { 
     try { 
      System.out.println(format.parse("Jan 10,2014")); 
      // Match found. Take action 
     } catch (ParseException exception) { 
      // Ignore. Try other pattern 
     } 
    }