首先,我是 java.time
包的新手。
我正在编写一个网络应用程序,它需要处理一天中的特定时间和多个持续时间的事件。
所以我使用 java.time
包的 LocalTime
和 Duration
类编写了我的代码。
当我需要在 JSP 中呈现它们的值时,对于 LocalTime
对象来说非常简单(因为 .toString()
返回一个人类可读的值),所以我可以写入 ${startTime}
一切都会以正确的方式进行(例如,它呈现为 9:00
)。
同样的方法不适用于 Duration,因为它的表示类似于 PT20M
(在本例中为 20 分钟)。
是否存在通过 EL 直接在 JSP 中执行人类可读转换的优雅方式?
是的,我知道我可以在我的类中将对象转换为字符串(在 JSP 之前),但我正在搜索建议的方法(我找不到)...另一点是我在 Duration 对象中看不到官方的“convert()”(或其他任何方法)...所以我想我使用了错误的对象来映射持续时间(在 LocalTime< 上添加或减去
s).
谢谢。
最佳答案
不幸的是,在 Java 8 中没有优雅的内置方法来格式化 Duration
。我发现最好的方法是使用 bobince 在 this 中描述的方法。回答:
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/