java - 通过 EL 以人类可读的格式打印 Duration

标签 java jsp java-8

首先,我是 java.time 包的新手。

我正在编写一个网络应用程序,它需要处理一天中的特定时间和多个持续时间的事件。

所以我使用 java.time 包的 LocalTimeDuration 类编写了我的代码。

当我需要在 JSP 中呈现它们的值时,对于 LocalTime 对象来说非常简单(因为 .toString() 返回一个人类可读的值),所以我可以写入 ${startTime} 一切都会以正确的方式进行(例如,它呈现为 9:00)。 同样的方法不适用于 Duration,因为它的表示类似于 PT20M(在本例中为 20 分钟)。

是否存在通过 EL 直接在 JSP 中执行人类可读转换的优雅方式?

是的,我知道我可以在我的类中将对象转换为字符串(在 JSP 之前),但我正在搜索建议的方法(我找不到)...另一点是我在 Duration 对象中看不到官方的“convert()”(或其他任何方法)...所以我想我使用了错误的对象来映射持续时间(在 LocalTime< 上添加或减去s).

谢谢。

最佳答案

不幸的是,在 Java 8 中没有优雅的内置方法来格式化 Duration。我发现最好的方法是使用 bobincethis 中描述的方法。回答:

    Duration duration = Duration.ofHours(1).plusMinutes(20);
    long s = duration.getSeconds();
    System.out.println(String.format("%d:%02d:%02d", s/3600, (s%3600)/60, (s%60)));

打印:

1:20:00

如果您需要更长的持续时间,则必须调整代码。

我不确定您缺少 convert 方法是什么意思,但是 Duration 非常适合在 LocalTime 上添加/减去>。 LocalTime.plus()LocalTime.minus() 方法接受 Duration 作为参数。

关于java - 通过 EL 以人类可读的格式打印 Duration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31091598/

相关文章:

java - 如何在 Java 8 中使用 lambda 将字符串排序为整数

java - while 循环内的方法

Java/JSTL : is it a good idea to put all URLs in an enum?

java - 如何在 CompletableFuture.allOf 之后调用无参数函数

java - 是否可以使用 Java 8 进行 Android 开发?

java - Jasper 报告 Excel 导出错误

java - ArrayList和Array递归的区别

javascript - 在 javascript 和 HTML 中从 ResourceBundle 中获取字符串

java - 访问 JSP 中的常量(没有 scriptlet)

java - 使用流对内部对象的 Map 属性进行分组?