我与一个日期计算奋力定义自己的范围条形图系列。
我的动态日期参数时间戳参数“timestamp1”,“timestamp2”,“timestamp3”,“timestamp4” wheras我想创建间隔
区间1:“timestamp1”和“timestamp2”之间的天
时间间隔2:“timestamp3”和“timestamp4”之间的天数。
是什么,我要添加到我的变量,以便为我的条形图系列两个时间间隔的表达? 我完全这个问题消失。
我与一个日期计算奋力定义自己的范围条形图系列。
我的动态日期参数时间戳参数“timestamp1”,“timestamp2”,“timestamp3”,“timestamp4” wheras我想创建间隔
区间1:“timestamp1”和“timestamp2”之间的天
时间间隔2:“timestamp3”和“timestamp4”之间的天数。
是什么,我要添加到我的变量,以便为我的条形图系列两个时间间隔的表达? 我完全这个问题消失。
正如评论说大卫·华莱士,你应该看看这个问题计算两个Java日期实例之间的差异 。 并搜索与“乔达”和“间隔”等问题。
乔达时间 2.3是用于处理日期,时间计算的开源库。 乔达时间激发了java.time的创建。*类被内置到Java 8。
由于在doc讨论 ,乔达时间提供间隔类整整您的需求:处理一对起止日期以智能的方式,精明与时区和夏令时(DST)等异常现象。
DateTime now = DateTime.now( DateTimeZone.forID( "Europe/Paris" ) ); // Current moment in Paris.
Interval interval = new Interval( now, now.plusHours( 8 ) );
为了描述的时间跨度(经过),看到了时代和持续时间的类。 他们可以描述人类语言(法语,英语等)的年,月,日,小时,分钟,秒。 他们可以描述的ISO 8601格式的跨度PnYnMnDTnHnMnS 。
进一步提示...
对于代表在某一时刻,使用的DateTime类。
必要时与只知道java.util.Date其他类交互,调用toDate
方法。
请注意,您应该避免使用java.util.Date/Calendar类,因为它们的设计不当和实施。 Java的8将取代它们与java.time。*上面提到的类。
我的问题解决了一个完整的不同的方法。 所以,如果有人可能想的时间间隔添加到iReprt图表,考虑以下因素:
我在SQL查询中总结了每个时间间隔的下载量。 像那样:
SELECT
SUM(CASE WHEN Downloads.ExtractDate BETWEEN "$P{myTimestamp1}" AND "$P{myTimestamp2}" THEN Downloads.Downloads ELSE 0 END) AS Sum1,
SUM(CASE WHEN Downloads.ExtractDate BETWEEN "$P{myTimestamp2}" AND "$P{myTimestamp3}" THEN Downloads.Downloads ELSE 0 END) As Sum
FROM aacdb.Downloads
在iReport的,我创建了一个柱形图使用下面的图表系列信息( 右键单击图表 - > 图表数据 - > 详细信息 ):
系列1
级数表达式
(new SimpleDateFormat("dd.MM.yy").format($P{myTimestamp1})) + " - " + (new SimpleDateFormat("dd.MM.yy").format($P{myTimestamp2}))
分类表达
$F{Name}
价值体现
$F{Sum1}
系列2
级数表达式
(new SimpleDateFormat("dd.MM.yy").format($P{myTimestamp2})) + " - " + (new SimpleDateFormat("dd.MM.yy").format($P{myTimestamp3}))
分类表达
$F{Name}
价值体现
$F{Sum2}
感谢大家的努力