SimpleDateFormat让我做到这一点:

SimpleDateFormat mySimpleDateFormatter = new SimpleDateFormat("dd-MMM-yyyy");


但是FastDateFormat不会:

import org.apache.commons.lang3.time.FastDateFormat;
//...
FastDateFormat myFastDateFormatter = new FastDateFormat(str, tz, loc);


现在它抱怨:


“构造函数FastDateFormat(String,TimeZone,Locale)不可见”


错误消息不会指引我到任何地方...我做错了什么?

最佳答案

与Java的SimpleDateFormat不同,您不能简单地声明Apache的FastDateFormat类的实例。

相反,FastDateFormat通过Factory Method Pattern静态提供类的实例-您必须调用类的静态方法getInstance,如下所示:

String dateFormatPattern = "yyyy-mm-dd'T'HH:mm:ss.SSSZ";
FastDateFormat myFastDateFormatter = FastDateFormat.getInstance(dateFormatPattern);


现在,您已加载了使用该日期格式模式配置的myFastDateFormatter。

您可以使用它来将字符串解析为真实的Date,假设这些字符串符合您的dateFormatPattern:

String dateString = "2014-04-03T14:02:57.182+0200";
Date myDate = myFastDateFormatter.parse(dateString);

07-28 13:09