你並不需要爲這個變量,直接使用的textFieldExpression
如果字段MO_DATECREATED
和MO_DATECOMPLETED
被宣佈爲:
as java.lang.Date
<field name="MO_DATECREATED" class="java.lang.Date">
<fieldDescription><![CDATA[]]></fieldDescription>
</field>
的textFieldExpression
將($F{MO_DATECOMPLETED}.getTime()-$F{MO_DATECREATED}.getTime())/(1000*60*60) + " hours"
。
嘿,多數民衆贊成java正好可以這麼理解它做什麼檢查了這一點:How to calculate time difference in java?
爲java.lang.String
<field name="MO_DATECREATED" class="java.lang.String">
<fieldDescription><![CDATA[]]></fieldDescription>
</field>
我們需要把它解析到Date
對象的第一..你的模式是mm/dd/yy hh:mm a
(new java.text.SimpleDateFormat("mm/dd/yy hh:mm a").parse($F{MO_DATECOMPLETED}).getTime()-new java.text.SimpleDateFormat("mm/dd/yy hh:mm a").parse($F{MO_DATECREATED}).getTime())/(1000*60*60) + " hours"
考慮到他們也許null
我們最好添加一個printWhenExpression
以及
完整的結果
<textField>
<reportElement x="0" y="0" width="100" height="20" uuid="eac93a84-7901-4205-b09c-556d48dc05e1">
<printWhenExpression><![CDATA[new java.lang.Boolean($F{MO_DATECREATED}!=null && $F{MO_DATECOMPLETED}!=null)]]></printWhenExpression>
</reportElement>
<textFieldExpression><![CDATA[(new java.text.SimpleDateFormat("mm/dd/yy hh:mm a").parse($F{MO_DATECOMPLETED}).getTime()-new java.text.SimpleDateFormat("mm/dd/yy hh:mm a").parse($F{MO_DATECREATED}).getTime())/(1000*60*60) + " hours"]]></textFieldExpression>
</textField>
毫無疑問,倒不如說他們是java.lang.Date
對象,無論是報告將填補快,解析沒有風險錯誤,你可以正確導出到excel ecc。要按照您的意願格式化java.lang.Date
對象,只需使用pattern屬性即可。
編輯:用戶已經選擇了java.util.Date
,問他怎麼也顯示分鐘,爲了這個,我已經創建了一個一般性的問題上How to create a single expression displaying time difference between two Date's as years, months, days, hours, minutes, seconds,現在是answered
這是治標不治本
<textField>
<reportElement x="0" y="0" width="100" height="20" uuid="eac93a84-7901-4205-b09c-556d48dc05e1">
<printWhenExpression><![CDATA[new java.lang.Boolean($F{MO_DATECREATED}!=null && $F{MO_DATECOMPLETED}!=null)]]></printWhenExpression>
</reportElement>
<textFieldExpression><![CDATA[($F{MO_DATECOMPLETED}.getTime()-$F{MO_DATECREATED}.getTime())/(24* 60 * 60 * 1000) + " days " +($F{MO_DATECOMPLETED}.getTime()-$F{MO_DATECREATED}.getTime())/(60 * 60 * 1000) % 24 + " hours " + ($F{MO_DATECOMPLETED}.getTime()-$F{MO_DATECREATED}.getTime())/(60 * 1000) % 60 + " minutes"]]></textFieldExpression>
</textField>
MO_DATECRE和MO_DATECOMP是什麼類? java.lang.Date或java.lang.String ?? –
目前的表達類是** java.lang.String ** – Ashton
好吧會發布你的答案...爲什麼不日期???? –