2013-04-15 4 views
1

Это странный вариант. Мой парсер Joda DateTimeFormatter отлично работает, если он не управляется Дженкинсом. Я даже могу войти в jenkins, как пользователь jenkins, и успешно запустить тесты.Joda DateTimeFormatter терпит неудачу только при запуске Jenkins

private static final DateTimeFormatter TIMESTAMP_FORMAT = 
    DateTimeFormat.forPattern("HH:mm:ss.SSS MMM dd yyyy"); 

public static DateTime datetime(String timeStamp, String timeZone) { 
    return TIMESTAMP_FORMAT.withZone(DateTimeZone.forID(timeZone)) 
         .parseDateTime(timeStamp) 
         .withZone(DateTimeZone.UTC); 
} 

@Test public void getDatetime() { 
    assertEquals(new DateTime("2013-01-01T00:35:18.146Z") 
    .withZone(DateTimeZone.UTC), datetime("00:35:18.146 JAN 01 2013", "GMT")); 
} 

При запуске Дженкинс я получаю:

java.lang.IllegalArgumentException: Invalid формат: "00: 35: 18,146 JAN 01 2013" будет неправильно сформирован на "JAN 01 2013"

+0

Какова настройка вашего проекта Jenkins? – longhua

ответ

2

Это проблема локали. Он выдает такое исключение, если локаль по умолчанию не является английским. Проверьте стандартную локальность Дженкинса.

К слову, вы также можете изменить свой код: добавить withLocale(Locale.ENGLISH) в форматтер.

public static DateTime datetime(String timeStamp, String timeZone) { 
    return TIMESTAMP_FORMAT.withZone(DateTimeZone.forID(timeZone)) 
      .withLocale(Locale.ENGLISH) 
      .parseDateTime(timeStamp) 
      .withZone(DateTimeZone.UTC); 
} 
+0

Превосходно, вот и все. Пока сервер был английским, Дженкинс был французским. –

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