function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
thsrthsr 

datetime型のデータをページに表示する際、タイムゾーンを指定する方法はありますか?

datetime型のデータをページに表示する際、タイムゾーンを指定する方法はありますか?(<apex:outputText>を使ったりして)

DBからの値はいつも標準時間しかとれないので、画面表示時日本時間がほしいのですが。。。

 

ご教授いただけたら幸いです。

よろしくお願いいたします。

Best Answer chosen by Admin (Salesforce Developers) 
matsumatsu

少し無理やりな方法ですが。。

 

<apex::smileytongue:aram value="{!Now()+0.375}" />

 

1日24時間を’1’とします。

日本時間は9時間プラスさせればいいので、9/24=0.375をプラスさせます。

Nowの場合では問題なく出力されました。

All Answers

HikeyHikey

inputText を利用する場合はコントローラ側でタイムゾーンを考慮して値を変更しなければならないようです。

日本時間であればGMT +9なのでコントローラ内でDatetime型の addHours メソッドを利用して+9時間すれば

良いかもしれません。

 

Case[] c = Database.query('select CreatedDate from case limit 1'); System.debug(c[0].CreatedDate); System.debug(c[0].CreatedDate.addHours(9));

 

ご存知のとおりinputFieldを利用すればユーザの詳細で設定されているタイムゾーンで時間を変換

して表示してくれます。

以下がケースオブジェクトのオープン日時を表示した例です。

https://c.ap0.visual.force.com/apex/AccountTest?Id=XXXXXXXXX

XXXXXXはケースのIDを指定して自分のユーザの詳細のタイムゾーンを変更して動作を確認してみてください。

<apex:page standardController="Case"> <apex:form > <apex:inputField value="{!Case.CreatedDate}"/> </apex:form> </apex:page>

 

Thanks
aki124aki124

Apexのコントローラ内でString型に変換してしまってもよいのであれば、Datetime型のformatメソッドを利用するのも一つの手だと思います。

 

 

実行コード:
 System.debug('そのまま:' + Datetime.now());
System.debug('フォーマット1:' + Datetime.now().format());
System.debug('フォーマット2:' + Datetime.now().format('yyyyMMdd HHmmss'));

実行結果(日本時間 3月5日 0時52分に実行した場合):

そのまま:2010-03-04 15:52:02
フォーマット1:2010/03/05 0:52
フォーマット2:20100305 005202

 

formatメソッドについての詳細は、ロジックのドキュメントライブラリ(英語)にある「Force.com Apex Code Developer's Guide」を参照してみてください。

thsrthsr

ご回答ありがとうございます。

apex:outputTextを使う場合は何か変換方法がありませんでしょうか?

下記は標準時間しか表示してくれないので、困っています。

ご教授いただければ幸いです。

 

<apex:outputText value="{0,date,yy/MM/dd hh:mm:ss}">
<apex:param value="{!Rst.createddate}" />

 

よろしくお願いいたします。

matsumatsu

少し無理やりな方法ですが。。

 

<apex::smileytongue:aram value="{!Now()+0.375}" />

 

1日24時間を’1’とします。

日本時間は9時間プラスさせればいいので、9/24=0.375をプラスさせます。

Nowの場合では問題なく出力されました。

This was selected as the best answer