2013-05-22 3 views
1

В рамках NETTY есть следующий код:SimpleDateFormat различного поведения в зависимости от Java версии

final class CookieDateFormat extends SimpleDateFormat { 

    private static final long serialVersionUID = 1789486337887402640L; 

    CookieDateFormat() { 
     super("E, d-MMM-y HH:mm:ss z", Locale.ENGLISH); 
     setTimeZone(TimeZone.getTimeZone("GMT")); 
    } 
} 

Проблема, которую я имею, что выход, приведенные выше варьируется в зависимости от версии JVM, когда я запускаю его.

  • на Java 1.6 я получаю: Wed, 22-Май-13 9:11:41 GM
  • на Java 1.7 я получаю: Wed, 22-May-2013 9:11:14 GMT

Есть ли способ изменить поведение на java 1.6, чтобы он соответствовал выводу 1.7 без изменения кода (поскольку я бы предпочел не менять код в нетти).

+1

Изменилось ли это, если вы используете другой jvm для его запуска? – vikingsteve

+0

У меня есть jdk 1.6 VM и jdk 1.7 VM ... она меняется, когда я меняю виртуальную машину. – Razvi

+2

, к сожалению, ни в спецификации 1,6, ни 1,7 ничего не говорится об использовании 'y' в форматах даты. Я бы предложил укусить пулю и перекомпилировать с помощью 'yy' или' yyyy' :) – vikingsteve

ответ

0

Попробуйте использовать d-MMM-yyyy вместо d-MMM-y. Я надеюсь, что разница в секундах (41 против 14) - это ваша типизирующая ошибка. В противном случае я не могу объяснить эту разницу.

+0

Я хотел бы исправить это, не изменяя код, так как он не в моем собственном коде, а в используемой структуре. – Razvi

+0

Какая структура? возможно, это с открытым исходным кодом? – vikingsteve

+0

Это каркас netty и он с открытым исходным кодом. Я создал проблему в их проекте github. – Razvi

Смежные вопросы