Java,日期来自没有模式的字符串

时间:2015-06-06 12:39:57

标签: java sql date entity javabeans

我需要从输入文件中获取Date实例。我不知道日期格式,但我想从用户配置文件设置中获取它。

以下代码不起作用:

DateFormat form = DateFormat.getDa​teInstance(DateF​ormat.SHORT, Locale.getDefaul​t());

try { 
    Date t = form.parse("6/6/2015");
}
  

无法解析的日期错误

我想知道是否有办法从字符串中获取日期而不知道日期字符串模式。

我需要这个日期来创建MySQL查询。也许有另一种方法来构建这个查询而不解析日期?我正在使用Entity Beans。

2 个答案:

答案 0 :(得分:4)

没有。考虑日期" 1/2/2015":是2月1日或1月2日。取决于您的语言环境。

相反,您应该更多特定:不是为 区域设置获取日期格式化程序,而是使用带有显式模式的SimpleDateFormat

答案 1 :(得分:2)

  

我想知道是否有任何方法可以在不知道数据字符串模式的情况下从字符串中获取数据。

如果没有任何更多信息,这很容易出错。例如,考虑“7/6/2015” - 这是指6月7日还是7月6日?

如果您了解用户的区域设置,则可以更好地执行 lot - 例如,您可以获取该区域设置的长,中,短和完整日期模式的DateFormat个实例,并一次尝试一个。但请记住,根据此代码的执行位置,默认语言环境(当前正在使用)可能不是用户的语言环境。您提到用户配置文件设置 - 希望已经包含区域设置。

另一种方法是要求用户告诉你的格式是什么 - 可能会提供很多不同的例子,让他们选择匹配的例子。

最后,如果文件中包含大量日期,并且您确信它们都采用相同的格式,您可以尝试以几种不同的格式解析所有的日期 - 这可能会减少出错的可能性,因为如果您还看过“13/1/2015”,“2015年7月6日”会变得毫无原则。