Java 在PeriodFormat中解决Joda时间错误?

Java 在PeriodFormat中解决Joda时间错误?,java,jodatime,Java,Jodatime,下面是我的代码,它揭示了一个Joda时间错误: import org.joda.time.Period; import org.joda.time.format.PeriodFormat; import org.joda.time.format.PeriodFormatter; import java.util.Locale; public class ScratchSpace { public static void main(String[] args) { L

下面是我的代码,它揭示了一个Joda时间错误:

import org.joda.time.Period;
import org.joda.time.format.PeriodFormat;
import org.joda.time.format.PeriodFormatter;

import java.util.Locale;

public class ScratchSpace {

    public static void main(String[] args) {
        Locale.setDefault(Locale.GERMAN);
        final PeriodFormatter periodFormatter = 
                 PeriodFormat.wordBased(Locale.ENGLISH);
        final Period period = new Period(6, 5, 4, 3);
        final String s = period.toString(periodFormatter);
        // i'm expecting english to be outputted
        System.out.println("s = " + s); // outputs german: 6 Stunden, 5 Minuten, 4 Sekunden und 3 Millisekunden
    }

}
根据JavaDocs,我应该用英语格式化句号。但是它使用的是当前的默认语言环境,在上面的例子中是德语

我正在使用Mac OS X 10.7上的Joda Time 2.0,计算机设置为“澳大利亚英语”作为首选语言


你能推荐一些简单的解决方法吗?

好的,我找到了一个解决方法:

final PeriodFormatter periodFormatter = 
             PeriodFormat.wordBased(new Locale(""));
然而,显然,PeriodFormat中存在一个bug。例如,PeriodFormat.getDefault()的JavaDocs说明:

然而,对我来说,结果是在执行以下操作时使用了用户的当前区域设置:

final PeriodFormatter periodFormatter = PeriodFormat.getDefault();

另一个解决方案是更新到最新的Joda时间源…根据此错误报告,它现在已修复:

@Phani,我想要英文格式的句点(用于不区分区域设置的日志记录)。如果默认的语言环境是德语,它将以德语显示。我不需要德语。请尝试使用withLocale(Locale.ENGLISH).toString();
final PeriodFormatter periodFormatter = PeriodFormat.getDefault();