Java中的Date.parse()是否可以安全使用,即使它已被弃用?如果没有,是否有可行的替代方案?

时间:2016-05-17 17:40:34

标签: java string date deprecated standard-library

我经常使用Date.parse(String)来解析未知格式的日期。到目前为止,我的用例似乎工作正常,但我想知道为什么它被弃用了,我是否应该避免它?文档只是说:

As of JDK version 1.1, replaced by DateFormat.parse(String s)

然而,在DateFormat中没有静态解析方法,只有an instance method,这需要一个DateFormat对象,我不会对未知的日期格式有所了解。

所以,我想知道......

  • Java设计师是否有任何关于他们为什么选择弃用它的官方声明?
  • 如果此方法适用于我的用例,我可以依赖Java的未来版本中提供的此功能吗?
  • 是否有一个可行的替代方法,不会因为解析多种可能的常见日期格式之一的字符串而弃用?

2 个答案:

答案 0 :(得分:5)

Date.parse(String)已弃用,因为它没有很好地国际化。首选SimpleDateFormatCalendar个对象。

对于个人用途,你知道它可以很好地解析日期,你可能不需要避免它,但你应该养成使用更标准选项的习惯,如果你要写更严重的日期 - 敏感的代码。

答案 1 :(得分:1)

现在解析Date的最简单方法是使用SimpleDateFormat,但是您需要先创建一个实例,而不再使用静态方法。

SimpleDateFormat format = new SimpleDateFormat(pattern);
Date date = format.parse(strDate)

DateCalendar编写得很糟糕,因为它们容易混淆且容易出错,它们完全被Java 8中包含的joda time版本所取代,所以无论如何你应该再依赖这种方法,因为它很快就会被删除。

因此,如果你使用Java 8,我强烈建议你直接使用DateTimeFormat,如果你有以前的版本,你应该使用上面提到的SimpleDateFormat

您需要做的是:

  1. 列出代码中需要支持的所有模式
  2. 将它们放入集合或数组中
  3. 然后对每个方法进行测试,直到方法parse(String)没有提出ParseException,类似于this