我经常使用Date.parse(String)来解析未知格式的日期。到目前为止,它似乎适用于我的用例,但我想知道为什么它被弃用,以及我是否应该避免它?文件只是说:
As of JDK version 1.1, replaced by DateFormat.parse(String s)
然而,DateFormat中没有静态解析方法,只有一个实例方法,它需要一个DateFormat对象,对于未知的日期格式,我不会有这个对象。
所以,我想知道。。。
- Java设计人员是否有任何关于他们为什么选择弃用它的官方声明
- 如果到目前为止,这种方法对我的用例来说很好,那么我是否可以依赖于未来版本的Java中提供的这种功能
- 有没有一种可行的替代方案不被否决,用于解析多种常见日期格式之一的字符串
Date.parse(String)已被弃用,因为它没有很好地国际化。SimpleDateFormat或Calendar对象是首选对象。
对于你知道它能很好地解析日期的个人用途,你可能不需要避免它,但如果你要写更严肃的日期敏感代码,你可能应该养成使用更标准选项的习惯。
现在解析Date
最简单的方法是使用SimpleDateFormat,但您需要首先创建一个实例,因为不再有静态方法了。
SimpleDateFormat format = new SimpleDateFormat(pattern);
Date date = format.parse(strDate)
Date
和Calendar
写得很糟糕,因为它们令人困惑且容易出错,它们意味着要完全被Java 8中包含的joda time
版本所取代,所以无论如何,你都应该再依赖这个方法,因为它很快就会被删除。
所以如果你使用Java 8,我强烈建议你直接使用DateTimeFormat
,如果你有以前的版本,你应该使用上面提到的SimpleDateFormat
。
你需要做的是:
- 列出代码中需要支持的所有模式
- 将它们放入集合或数组中
- 然后测试它们中的每一个,直到方法
parse(String)
没有引发ParseException
,类似于