プログラマ38の日記

主にプログラムメモです。

Salesforce: apex:outputText で 日付/時間型はGMTで表示される

outputTextでは、日付/時間型の項目がGMTで表示される仕様ではまりました。

時間まで出力していれば、ずれてるのは比較的気づくのですが日付までしか表示していなかったため発見に時間がかかりました。。

 

[日付がずれる書き方]

<APEX:OUTPUTTEXT value="{0, date, yyyy/MM/dd}">
    <APEX:PARAM value="{!items.datetimefield }"></APEX:PARAM>
</APEX:OUTPUTTEXT>

 [日付がずれない書き方]

<APEX:OUTPUTTEXT value="{0, date, yyyy/MM/dd}">
    <APEX:PARAM value="{!items.datetimefield +9/24}"></APEX:PARAM>
</APEX:OUTPUTTEXT>

 

上記のように9/24を足すことで9時間の補正となります。

ユーザ別の各タイムゾーンに対応したい場合は、apex class内でDatetime.formatでフォーマットした文字列を表示をしたほうがいいです。

 

というのは、yyyy/MM/dd などのフォーマット自体が各地域で異なりますので。