2017-11-08 38 views
0
私はこの方法をやった

.. freemarkerで日付を文字列に変換するには?

<#assign createdOn='${receipt.arPaymDate}'> 
${createdOn?datetime("MMM dd yyyy HH:mm:ss 'GMT'Z")?date} 

は、しかし、私は

ことが知られていないので、それが日付だ 場合、文字列に日付などの値を変換できません(execptionの下に取得しています時刻のない部分)、時刻または日付時刻の値。 非難の式:==> receipt.arPaymDate [テンプレート で "WEB-INF/FTL/receiptPdf.ftl" 22行で、コラム47]

あなたが最初に必要になることがありadvened

+0

FreeMarkerは '?date'を使用しているので、表示されている例のエラーメッセージはほとんどありません。そのため、FreeMarkerは日付のみの値であることを認識します。 – ddekany

+0

'$ {createdOn?datetime(...)}'は 'createdOn'が' Date'になることを期待しています。しかし、 'createdOn = '$ {...}''で初期化しています。これにより 'String'(引用符で囲まれた値)になります。 '<#assign createdOn = receipt.arPaymDate />'を試してください。 – manish

答えて

0

に感謝日付形式

<#setting date_format="dd-MM-yyyy"> 

<#assign createdOn='${receipt.arPaymDate}'> 
${createdOn?datetime("MMM dd yyyy HH:mm:ss 'GMT'Z")?date} 

にinitまたそれはreceipt.arPaymDateの種類がされて何に依存How to convert date in specific format in Freemarker template or javascript

+0

@ wodongありがとう、少し修正してくれてありがとうございました –

+0

この回答には問題があります:割り当てに ''$ {...}'を不必要に使い、'?datetime'と'?date'。しかし、私の答えを見てください。 – ddekany

0

を参照してください。いずれの場合においても

、あなたはそれがすでにjava.util.Dateた場合でも、文字列に変換元receipt.arPaymDate(あなたがそこに空の文字列に挿入される)として、<#assign createdOn='${receipt.arPaymDate}'>が、<#assign createdOn=receipt.arPaymDate>を書くべきではありません。それがStringだった場合、それは何もしないので、不必要な冗長さです。

receipt.arPaymDatejava.util.Dateあり、そしてあなたが'${...}'せずに割り当てを行う場合は、?datetime(...)一部のみ?date部分は必要ありません:${createdOn?date}を。 (receipt.arPaymDateは時間、それが唯一の日付部分を保存するために知られていて、java.sql.Dateでない場合でも、?dateを省略することができる。)

receipt.arPaymDateが文字列なので、あなたが今までにそれを解析する必要がある場合は、あなただけの${createdOn?date("MMM dd yyyy HH:mm:ss 'GMT'Z")}を書くことができます。パターンに時間の部分があることは問題ではなく、結果は日付のみの値としてマークされます(?date)。

また、明確でない場合もありますが、この例の割り当ては不要です。 1つは${receipt.arPaymDate?date}と書くことができます。

関連する問題