如何在 Birt 报告中将字符串转换为 time/minutes?

How to convert a string to time/minutes in Birt report?

我在数据库中存储了字符串值“4:30 PM”,我正在 Birt 中获取它。我想将此值转换为分钟。有没有 method/way(In birt/database) 可以做到这一点? (夹板和添加除外)

P.S。 : 我想找出“4:30 PM”和 04:45 PM(及时存储)之间的分钟差。

F.Y.I。 : 我正在使用 Postgres 数据库。

我同意 Frank 的意见,在数据库中存储字符串类型来表示时间值是一种非常低效的设计。然而,有时我们不能轻易改变这一点。下面是如何在 BIRT 中解析这种格式。

在数据集中创建一个计算列,将 "Time" 设置为数据类型并输入为表达式:

var dateFormat = new java.text.SimpleDateFormat("hh:mm a",java.util.Locale.ENGLISH);
dateFormat.parse(row["timeString"]);

其中 "timeStr" 当然是该字符串格式的时间列的名称。如果数据集应处理大量数据,您可以通过在 beforeOpen 事件中仅初始化一次 "dateFormat" 来优化此表达式。

对于第二个问题,Birt有一个原生的static函数可以分分钟求差:

BirtDateTime.diffMinute(time1, time2);