Вопрос: Дата публикации Parser


Я ищу надежную замену для SimpleDateFormat, parseObject на добрый FastDateFormat не выполняется и просто выдает ошибку. Есть идеи? Мне не нужно ничего интересного, просто безопасность потоков и способность справляться с этим шаблоном: "yyyy-MM-dd",


10


источник


Ответы:


Если это вообще возможно, используйте Время в Джоде , Его синтаксические анализаторы даты и времени являются потокобезопасными, и обычно это много  более удобный API, чем Date/ Calendar,

Вы Можно  используйте только свои парсеры, а затем преобразуйте возвращаемые значения в Date, но лично я бы рекомендовал использовать всю библиотеку.


13



Как указано в эта почта  вы можете синхронизировать, использовать локаторы потоков или Joda-Time.

Например, используя ThreadLocals:

public class DateFormatTest {

  private static final ThreadLocal<DateFormat> df
                 = new ThreadLocal<DateFormat>(){
    @Override
    protected DateFormat initialValue() {
        return new SimpleDateFormat("yyyyMMdd");
    }
  };

  public Date convert(String source)
                     throws ParseException{
    Date d = df.get().parse(source);
    return d;
  }
}

8



Почему бы не позвонить SimpleDateFormat.parseObject() в свои собственные synchronized блок?


1



Найти решение ,

public class ThreadSafeSimpleDateFormat {

 private DateFormat df;

 public ThreadSafeSimpleDateFormat(String format) {
     this.df = new SimpleDateFormat(format);
 }

 public synchronized String format(Date date) {
     return df.format(date);
 }

 public synchronized Date parse(String string) throws ParseException {
     return df.parse(string);
 }
}

1