private final static SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("ddMMMyy", Locale.ENGLISH); //method 1
private static Date getSimpleDate(String sDate) throws ParseException{
SimpleDateFormat F = new SimpleDateFormat("ddMMMyy", Locale.ENGLISH);
System.out.println("pDAte:"+ F.parse(sDate).toString());
return F.parse(sDate);
} //[method 2]
private static ThreadLocal<SimpleDateFormat> dateFormat = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("ddMMMyy", Locale.ENGLISH);// [method 3]
}
}; //method3
private final static DateTimeFormatter DATE_FORMATTER =
new DateTimeFormatterBuilder().parseCaseInsensitive()
.appendPattern("ddMMMyy")
.toFormatter(); //[method 4]
Когда я анализировал дату, используя метод 1, я сталкивался с большим исключением,
java.lang.NumberFormatException: For input at
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
и
java.lang.NumberFormatException: For input string: ".1818E2.1818E2"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
сначала мой вопрос: это значение ".1818E2.1818E2" Я не устанавливаю это значение, но сталкиваюсь. Где прибывает ценность. Хотя я правильно устанавливаю значение даты в правильном формате, я сталкиваюсь с этой проблемой.
Но другие методы (method2, method3, method4) работают. и решил проблемы. Эти три метода являются альтернативным решением.
Второй мой вопрос: что является отличительным признаком этого метода?
public Date getDscDateAsDate() throws ParseException {
if(getDscDate()!=null) {
return SIMPLE_DATE_FORMAT.parse(getDscDate());
}
return null;
}