Joda DateTimeFormatter仅在Jenkins运行时失败

时间:2013-04-15 09:00:11

标签: java jenkins jodatime

这是一个奇怪的。我的Joda基于DateTimeFormatter的解析器完美运行,除非它由Jenkins运行。我甚至可以像jenkins用户一样登录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:格式无效:“00:35:18.146 JAN   2013年1月1日“在2013年1月1日”

1 个答案:

答案 0 :(得分:2)

这似乎是一个语言环境问题。如果默认语言环境不是英语,它将抛出此类异常。请检查Jenkins默认语言环境。

顺便说一句,您还可以更改代码:将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);
}