Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jasper reports iReport中的日期操作_Jasper Reports_Ireport - Fatal编程技术网

Jasper reports iReport中的日期操作

Jasper reports iReport中的日期操作,jasper-reports,ireport,Jasper Reports,Ireport,我有一个datetime列,它的数据如下:2013-04-1923:44:27.357 在iReport中,我使用expressionnewsimpledateformat(“h:mma”).format($F{domain\u datetime})仅显示时间 在上面的表达式中,我想说如果时间大于23:59,那么我想显示一天,而不是显示时间,例如3月5日13日,否则显示时间 如何操作?如果您不关心秒以外的信息,只想将任何格式转换为12:00AM的内容,您可以使用以下内容替换当前表达式: (new

我有一个datetime列,它的数据如下:2013-04-1923:44:27.357

在iReport中,我使用expression
newsimpledateformat(“h:mma”).format($F{domain\u datetime})
仅显示时间

在上面的表达式中,我想说如果时间大于23:59,那么我想显示一天,而不是显示时间,例如3月5日13日,否则显示时间


如何操作?

如果您不关心秒以外的信息,只想将任何格式转换为
12:00AM
的内容,您可以使用以下内容替换当前表达式:

(new SimpleDateFormat("h:mma").format($F{domain_datetime}).equals("12:00AM")) ? 
new SimpleDateFormat("dd MMM yy").format($F{domain_datetime}) : 
new SimpleDateFormat("h:mma").format($F{domain_datetime})
现在它可以工作了,但是它为表达式创建了3个新的
SimpleDateFormat
实例,而只需要2个或更多的实例(我也想知道它是否会为每一行创建3个新的
SimpleDateFormat
对象,但我不知道是否是这样)。所以在我看来这是可以改进的

在报告中创建两个新参数,它们将是
simpleDataFormat
实例。它们的XML应该如下所示:

<parameter name="TIME_FORMAT" class="java.text.SimpleDateFormat" isForPrompting="false">
    <defaultValueExpression><![CDATA[new SimpleDateFormat("h:mma")]]></defaultValueExpression>
</parameter>
<parameter name="DATE_FORMAT" class="java.text.SimpleDateFormat" isForPrompting="false">
    <defaultValueExpression><![CDATA[new SimpleDateFormat("dd MMM yy")]]></defaultValueExpression>
</parameter>

如果您使用的是JRBeanCollectionDataSource,为什么不在用于填充报表的查询上执行此操作,或者在Java中执行此操作?这样,无论文本是什么,您只需要显示文本

那么您是说如果日期是
2013-04-19 23:59:27.357
它应该格式化为
13年3月19日
还是
11:59下午
($P{TIME_FORMAT}.format($F{domain_datetime}).equals("12:00AM")) ? 
$P{DATE_FORMAT}.format($F{domain_datetime}) : 
$P{TIME_FORMAT}.format($F{domain_datetime})