Visualforce(メールテンプレート)で数値や日時項目の表示フォーマットを指定する方法(日本時間時差修正含む)

Visualforce形式のメールテンプレートを作成しているときに、いくつか表示のフォーマットで苦労したので、メモしておこうと思います。

特に、差込項目としてそのままだと、なかなか思ったように表示させることができませんでした。

 

日時(Datetime)項目が欧米式のフォーマットで表示されてしまう

日時(Datetime)項目をそのまま表示すると、「Sun Jan 01 05:51:00 GMT 2017」のようにGMTで、しかも欧米式のフォーマットで表示されてしまいます。

「2017/01/01 14:51:22」のように表示するにはどうしたらいいでしょう?

Visualforceでは、「outputtext」を使うと、フォーマットを指定できます。

(※下記では、ColDatetime__cが日時項目だとします)

さらに、時間の加算も出来るので、標準時+9時間だと、(9/24)で日本時間にすることができます。

<!-- 日本時間での日時表示 -->
<apex:outputtext value="{0, date, yyyy/MM/dd HH:mm:ss}">
    <apex:param value="{!relatedTo.ColDatetime__c+(9/24)}"></apex:param>
</apex:outputtext>

 

整数の数値項目が小数点付きで表示されてしまう

数値項目は、「5.0」のように、小数点付きで表示されてしまいます。

オブジェクトの項目の定義で、小数点以下の桁数を0桁に変更しても変わりません。

そのような場合は、

<!-- 数値のカンマ区切り -->
<apex:outputtext value="{0, number, ###,###}">
	<apex:param value="{!relatedTo.Number__c}"></apex:param>
</apex:outputtext>

<!-- 数値の0埋め表示 -->
<apex:outputtext value="{0, number, 000000}">
	<apex:param value="{!relatedTo.Number__c}"></apex:param>
</apex:outputtext>

 

なお、もっと複雑なことをしたい場合は、コンポーネントを使うと簡単に実装できます。

やり方は「SalesforceのVisualforce Emailテンプレートで、コンポーネントを使用しpicklistの翻訳を取得する」を参考にしてください。

コメントを残す

サブコンテンツ

このページの先頭へ