3.2.2.3.4. 代码中的日期和数字格式化示例

如果需要按照用户当前的 locale 格式化或者解析 BigDecimalIntegerLongDoubleBoolean 或者 Date 类型,可以使用 DatatypeFormatter bean,示例:

  1. @Inject
  2. private DatatypeFormatter formatter;
  3. void sample() {
  4. String dateStr = formatter.formatDate(dateField.getValue());
  5. // ...
  6. }

下面是直接使用 Datatype 的例子。

  • 日期格式化示例:
  1. @Inject
  2. protected UserSessionSource userSessionSource;
  3. @Inject
  4. protected DatatypeRegistry datatypes;
  5. void sample() {
  6. Date date;
  7. // ...
  8. String dateStr = datatypes.getNN(Date.class).format(date, userSessionSource.getLocale());
  9. // ...
  10. }
  • 在 Web 客户端格式化数字,显示最多 5 位小数示例:

com/sample/sales/web/messages_ru.properties

  1. coordinateFormat = #,##0.00000
  1. @Inject
  2. protected Messages messages;
  3. @Inject
  4. protected UserSessionSource userSessionSource;
  5. @Inject
  6. protected FormatStringsRegistry formatStringsRegistry;
  7. void sample() {
  8. String coordinateFormat = messages.getMainMessage("coordinateFormat");
  9. FormatStrings formatStrings = formatStringsRegistry.getFormatStrings(userSessionSource.getLocale());
  10. NumberFormat format = new DecimalFormat(coordinateFormat, formatStrings.getFormatSymbols());
  11. String formattedValue = format.format(value);
  12. // ...
  13. }