2012-04-11 3 views
3

Hier ist mein Code, der eine Joda Zeit Fehler zeigt:Work-around für einen Joda Time Bug in PeriodFormat?

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 
    } 

} 

den JavaDocs Laut ich in Englisch formatiert die Zeit immer sein sollte. Es wird stattdessen das aktuelle Standardgebietsschema verwendet, das im obigen Beispiel Deutsch ist.

Ich verwende Joda Time 2.0 auf Mac OS X 10.7, wobei der Computer auf "Australian English" als bevorzugte Sprache eingestellt ist.

Irgendwelche einfachen Umgehungsarbeiten, die Sie vorschlagen können?

+0

@Phani, ich möchte die Periode in Englisch formatiert (für locale-agnostic Protokollierung). Es erscheint auf Deutsch, wenn das Standardgebietsschema Deutsch ist. Ich will kein Deutsch. –

+1

versuchen Sie es mit Locale (Locale.ENGLISH) .toString(); – Phani

Antwort

1

Okay, ich habe eine Behelfslösung gefunden:

final PeriodFormatter periodFormatter = 
      PeriodFormat.wordBased(new Locale("")); 

Allerdings gibt in PeriodFormat eindeutig ein Fehler vorliegt. Zum Beispiel sagt die JavaDocs für PeriodFormat.getDefault():

Gets the default formatter that outputs words in English. 
This calls {@link #wordBased(Locale)} using a locale of {@code ENGLISH}. 

während das Ergebnis für mich, dass der aktuelle Gebietsschema des Benutzers ist, verwendet stattdessen, wenn ich ausführen diese:

final PeriodFormatter periodFormatter = PeriodFormat.getDefault(); 
Verwandte Themen