Hi all,

DateUtils.formatElapsedTime returns different results depending on the
current locale if the time is bigger than 1000 minutes.

Under the covers we use a MessageFormat

    private static final MessageFormat MINUTE_SECONDS
             = new MessageFormat("{0}{1}");

where {0} is set to be

    private static final ChoiceFormat MINUTES_FORMAT =
            new ChoiceFormat(LIMITS, MINUTES_PART);

and MINUTES_PART is

    private static final String[] MINUTES_PART = {"", "1 minute ", "{0,number} 
minutes "};

ChoiceFormat doesn't provide any way to set the Locale and setting it
on the "outer" MessageFormat doesn't have any effect.  ChoiceFormat
does provide a getFormats method that return Object[] and I hoped it
would return the DecimalFormat instance used in the last case, but it
just returns the same String[] passed in (wonder why it returns an
Object[]).

Setting setGroupingUsed on the choice format doesn't have any effect
either and I don't see a way to specify either the locale or the
grouping inside the pattern - well, unless I use a pattern like
############### (Long.MAX_VALUE / 60 / 1000 should fit into this).

My preference would be to use Locale.US since the text for "minute" is
English anyway.  Does anybody see a cleaner way than either use the
pattern above or implementing the logic of ChoiceFormat ourselves?

Stefan

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to