Freemarker IF声明日期

时间:2017-04-11 16:14:45

标签: freemarker

我对Freemarker非常陌生,所以对这种语言并不是很了解。

我正在尝试编写要在PDF发票模板中使用的IF语句。我已经拥有的代码如下:

<#if record.billcountry == "ZA">
<table class="footer" style="width: 100%;">
<tr>
<td align="right"><b><#if record.subsidiary == "DBL">VAT No: GB xxxxxxxxx<br/></#if>VAT No: Applied For.</b>
</td>
</tr>
</table>
<#elseif record.subsidiary == "DBL">
<table class="footer" style="width: 100%;">
<tr>
<td align="right"><b>VAT No: GB xxxxxxxxx</b>
</td>
</tr>
</table>

以上是说如果开票国家是ZA,子公司是DBL,请输入增值税登记号码。如果sub不是DBL,请输入VAT No:Applied For。消息。

但是我想更改此项以包含日期,因此逻辑表明如果开票国家/地区为ZA且子公司为DBL,请输入VAR Reg No.如果子项不是DBL,则日期为在2017年4月1日之前输入消息,但如果日期是01.04.2017或之后,请输入增值税注册号。 YYYYYYYYY。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

首先,这种业务逻辑通常在模板中没有位置。模板应侧重于演示。

但是,让我们假设你真的必须在模板中这样做。 通常的比较运算符(<<=>>===)适用于日期/时间值。例如,您可以执行以下操作:

<#if someDate < '2017-04-01'?date.iso>
  before
<#else>
  after
</#if>

但要注意时区的细微之处。当比较时间值时,首先将它们转换为自UTC时区中的纪元以来的毫秒,然后比较两个时间戳。因此,我们将someDate2017-04-01T00:00:00进行比较,其中最后一个被解释为在为FreeMarker设置的默认时区。因此,我建议将01.04.2017作为java.util.Date放入数据模型中,从而确保它与其他日期位于同一区域。所以你最终得到<#if someDate < vatPolicyChangeDate>

之类的东西