日付時間( datetime
)型のデータをVisualforceに表示する時に、apex:outputtext
を使用すればフォーマットさせて表示することが出来るのだが、GMTで表示されてしまうため9時間ずれてしまう。
これはオプションでは用意されていないようで、apex側でずらす時間を指定してそれを足してやる、という方法でタイムゾーンを指定してやる必要があるよう。
apexで使用アカウントでセットされているタイムゾーンを取得してずれている時間のミリ秒を取得してそれを足す、という方法。
apex
1
2
3
4
5
6
7
8
| //表示する日付
datetime_test = Datetime.newInstance(2018, 6, 5, 0, 0, 0);
public Double timezoneOffset{get{
TimeZone tz = UserInfo.getTimeZone();
//Milliseconds to Day
return tz.getOffset(DateTime.now()) / (1000 * 3600 * 24.0);
}}
|
VF
1
2
3
4
5
6
7
8
9
10
11
12
| {!datetime_test}
// Mon Jun 04 15:00:00 GMT
<apex:outputtext value="{0, date, yyyy/MM/dd HH:mm:ss}">
<apex:param value="{!datetime_test}" />
</apex:outputtext>
// 2018 2018/06/04 15:00:00
<apex:outputtext value="{0, date, yyyy/MM/dd HH:mm:ss}">
<apex:param value="{!datetime_test + timezoneOffset}" />
</apex:outputtext>
// 2018/06/05 00:00:00
|
参考