【问题标题】:Date Conversion (String to java.sql.Date) in javajava中的日期转换(字符串到java.sql.Date)
【发布时间】:2014-03-25 08:33:49
【问题描述】:

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

【问题讨论】:

  • 为什么我们没有在谷歌上搜索就得到这么多日期/字符串转换问题???搜索SimpleDateFormat
  • IMO 您需要指定您想要处理的所有日期格式,然后尝试解析每种格式。
  • 出于兴趣,您怎么知道 01-10-2014 是 2014 年 10 月 1 日而不是 2014 年 1 月 10 日。如果您可以影响输入的数据格式,那么现在是时候这样做了,如果输入的日期格式不受限制,则不能明确地将其转换为日期。
  • 这种固有的模糊性是设计ISO 8601 标准的原因。如果可能,请使用这些标准格式。 java.time 类在解析/生成日期时间值的文本表示时默认使用这些格式。

标签: java oracle sqldatetime


【解决方案1】:

这是不可能的。

您无法区分dd/MM/yyyyMM/dd/yyyy

您确实需要知道格式,否则您的程序可能不会按照您想要的方式运行。

【讨论】:

    【解决方案2】:

    使用 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
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多