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]