Memos About Salesforce

Salesforceにハマってたこと!

Apex 日付 形式 フォーマット

こんにちは、管理人の@Salesforce.Zです。

日付の形式を設定することが複雑ではありませんが、毎回忘れがちです。日付のフォーマットは少々の不注意で、すぐアメリカ時間になってしまいますので、メモしとこうと思います。

読んだら得ること

★ VFとApexでの日付のフォーマット/形式の設定方法

目次

Apexでの日付のフォーマット/形式の設定方法

日付には、Date型とDatetime型があります。

Date型

System.debug('■■■■ Date ■■■' + date.today().format());

f:id:jude2016:20191212124307p:plain
デバッグ結果

Formatメソッドに日付形式を指定する

System.debug('■■■■ Date ■■■' + date.today().format('yyyy-MM-dd'));

f:id:jude2016:20191212124438p:plain
怒られる……

DateTime型

yyyy-MM-dd hh:mm:ss(hhは12時間制)

System.debug('■■■■ DateTime ■■■' + datetime.newInstance(2019, 12, 12, 14, 30, 00).format('yyyy-MM-dd hh:mm:ss'));

f:id:jude2016:20191212125012p:plain
hhは12時間制

yyyy-MM-dd HH:mm:ss(HHは24時間制)

System.debug('■■■■ DateTime ■■■' + datetime.newInstance(2019, 12, 12, 14, 30, 00).format('yyyy-MM-dd HH:mm:ss'));

f:id:jude2016:20191212125132p:plain
HHは24時間制

yyyy-MM-dd HH:mm:ss(MM(2個)は月が2桁(左ゼロ埋め))

System.debug('■■■■ DateTime ■■■' + datetime.newInstance(2019, 6, 12, 14, 30, 00).format('yyyy-MM-dd HH:mm:ss'));

f:id:jude2016:20191212125556p:plain
月は左ゼロ埋め

yyyy-M-dd HH:mm:ss(M(1個)は月が2桁(左ゼロ埋めしない))

System.debug('■■■■ DateTime ■■■' + datetime.newInstance(2019, 6, 12, 14, 30, 00).format('yyyy-M-dd HH:mm:ss'));

f:id:jude2016:20191212125707p:plain
月はゼロ埋めしない

タイムゾーン

日本なら、JSTタイムゾーンに変換できる

使用例

System.debug('■■■■ DateTime ■■■' + datetime.newInstance(2019, 6, 12, 14, 30, 00).format('yyyy-MM-dd HH:mm:ss', 'JST'));

VFでの日付フォーマット

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

<!-- 0埋め6桁数値 -->
<apex:outputtext value="{0, number, 000000}">
    <apex:param value="{!ItemNumber}"></apex:param>
</apex:outputtext>

<!-- 日付と時刻 -->
<apex:outputtext value="{0, date, yyyy/MM/dd HH:mm:ss}">
    <apex:param value="{!ItemDate}"></apex:param>
</apex:outputtext>

リファレンス

KayaMemo

日付/時間フォーマットの変更方法