定义一个的startDate和结束日期的自定义时间间隔在一个新的变量(Define own date

2019-10-19 03:32发布

我与一个日期计算奋力定义自己的范围条形图系列。

我的动态日期参数时间戳参数“timestamp1”,“timestamp2”,“timestamp3”,“timestamp4” wheras我想创建间隔

区间1:“timestamp1”和“timestamp2”之间的天

时间间隔2:“timestamp3”和“timestamp4”之间的天数。

是什么,我要添加到我的变量,以便为我的条形图系列两个时间间隔的表达? 我完全这个问题消失。

Answer 1:

正如评论说大卫·华莱士,你应该看看这个问题计算两个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。*上面提到的类。



Answer 2:

我的问题解决了一个完整的不同的方法。 所以,如果有人可能想的时间间隔添加到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}

感谢大家的努力



文章来源: Define own date intervals with startDate and endDate in a new variable