如何i18n格式化字节数和持续时间

时间:2013-03-09 13:49:05

标签: java icu

我想格式化一条消息,例如“1.0 KiB的数据传输耗时1:32小时”。但是我需要格式化和本地化的字节数和持续时间。我发现了几个想法如何格式化字节数,持续时间似乎很好。但随之而来的是本地化和我的本土代码变得过度。 我正在寻找任何想法如何在ICU库的帮助下实现这种格式化。

2 个答案:

答案 0 :(得分:2)

您可以简单地使用Java MessageFormat,它允许您将不同的java类型格式化为字符串;这种格式应该做你想做的事情

final MessageFormat format = new MessageFormat("Data transfer of {0,number,0.0} KiB took {1}:{2} hours");

用法是

final String formatted = format.format(new Object[]{amountTransferred, hours, minutes});

amountTransferreddoublefloatBigDecimalhoursminutes是整数类型。

如果您需要单独执行此操作,已经有post关于如何将分钟数格式化为HH:mm

答案 1 :(得分:0)

ICU现在有单位的紧凑小数(1.0 MiB)和持续时间格式。这是一个很好的问题,我不认为msgformat现在本身支持这个。

你可以做的只是在Boris的响应中使用没有KiB的模式{0,number},但是然后调用format.setFormat(0,...)用CompactDecimalFormat或单位格式化程序替换数字格式化程序。