我们有一些这样的现有代码:

DateFormat[] dateFormats = {
    new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH),
    new SimpleDateFormat("d MMM yyyy HH:mm:ss Z", Locale.ENGLISH)
};

出于线程安全原因,我尝试将其转换为使用 Joda Time 的格式化程序,因此:
DateTimeFormatter[] dateFormats = {
    DateTimeFormat.forPattern("EEE, d MMM yyyy HH:mm:ss Z")
                  .withLocale(Locale.ENGLISH)
                  .withOffsetParsed(),
    DateTimeFormat.forPattern("d MMM yyyy HH:mm:ss Z")
                  .withLocale(Locale.ENGLISH)
                  .withOffsetParsed()
};

然而,令我惊讶的是,现有的测试用例被破坏了。特别是(至少是导致测试失败的第一行):
String dateString = "Wed,  1 Feb 2006 21:58:41 +0000";

DateFormat 很高兴匹配逗号后的两个或多个空格,但 DateTimeFormatter 只匹配字面上的单个空格。

我可能可以添加一种允许额外空间的额外格式,但不得不这样做有点可怕,那么有什么方法可以自定义 DateTimeFormatter 以更轻松地处理空格?

最佳答案

我认为在解析之前处理输入字符串要容易得多

str = str.replaceAll("  +", " ");

关于java - 消除 DateTimeFormat 和 Joda 的 DateTimeFormatter 之间细微的空白处理差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19439821/

10-09 19:48