尝试制作一个Jasper报告,我在使用Java的Date类时遇到了麻烦。我正在使用.CSV文件,所以很遗憾无法使用SQL来解决我的问题。
我把它缩小到这句话:
new Long( 1L * $V{Date2Long} - 1L * $V{Date1Long})
Date2Long和Date1Long是:(两个变量类都是Date)
new Long($V{Date2}.getTime())
new Long($V{Date1}.getTime())
其中Date2和Date1为:(两个变量类都为Long)
new SimpleDateFormat("MM/dd/yyyy HH:mm").parse($F{Date2CSVColumnName})
new SimpleDateFormat("MM/dd/yyyy HH:mm").parse($F{Date1CSVColumnName})
使用日期示例:
Date2 =“05/05/2015 13:22”
Date1 =“04/28/2015 16:54”
差异应为= 6天,20小时,28分钟
使用java的.getTime()我得到:
Date2 =“1430850120000”
Date1 =“1430258040000”
ProductionDateInMilliseconds - CreateDateInMilliseconds:
我上面的java等式= 58860000(0.68125天)< ---- ERROR
差异应为= 592080000(6.85天)
我能做的唯一假设是我在某处发生了溢出错误。但是,当我使用的只是长时间时,我看不出这是怎么可能的。在IReport中,多头只是被打破了吗?
答案 0 :(得分:0)
我试过这个并没有错误的iReport。这是我的JRXML文件 -
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report1" language="groovy" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="322b2351-0f86-4ebd-9c51-905d97f5d8f8">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="Date2CSVColumnName" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["05/05/2015 13:22"]]></defaultValueExpression>
</parameter>
<parameter name="Date1CSVColumnName" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["04/28/2015 16:54"]]></defaultValueExpression>
</parameter>
<variable name="Date2" class="java.util.Date">
<initialValueExpression><![CDATA[new SimpleDateFormat("MM/dd/yyyy HH:mm").parse($P{Date2CSVColumnName})]]></initialValueExpression>
</variable>
<variable name="Date1" class="java.util.Date">
<initialValueExpression><![CDATA[new SimpleDateFormat("MM/dd/yyyy HH:mm").parse($P{Date1CSVColumnName})]]></initialValueExpression>
</variable>
<variable name="Date2Long" class="java.lang.Long">
<variableExpression><![CDATA[]]></variableExpression>
<initialValueExpression><![CDATA[new Long($V{Date2}.getTime())]]></initialValueExpression>
</variable>
<variable name="Date1Long" class="java.lang.Long">
<variableExpression><![CDATA[]]></variableExpression>
<initialValueExpression><![CDATA[new Long($V{Date1}.getTime())]]></initialValueExpression>
</variable>
<title>
<band height="138" splitType="Stretch">
<textField>
<reportElement x="101" y="0" width="358" height="22" uuid="16e461b2-4c7a-49c6-802e-9bd66b818ce1"/>
<textFieldExpression><![CDATA[$V{Date2}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="101" y="22" width="358" height="22" uuid="5609ffc9-354c-48ba-bbda-4ef8753875a7"/>
<textFieldExpression><![CDATA[$V{Date1}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="101" y="58" width="358" height="22" uuid="70582d8a-2c68-463a-ad73-6068bd2c58fd"/>
<textFieldExpression><![CDATA[$V{Date2Long}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="101" y="80" width="358" height="22" uuid="e48af180-0bb1-4d19-b908-fa7b1a962f45"/>
<textFieldExpression><![CDATA[$V{Date1Long}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="101" y="116" width="358" height="22" uuid="71ffab1a-f70d-4601-978c-96b73ae0f268"/>
<textFieldExpression><![CDATA[new Long( 1L * $V{Date2Long} - 1L * $V{Date1Long})]]></textFieldExpression>
</textField>
</band>
</title>
</jasperReport>
看看。