tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:ApexでDateTime型をDate型に変換する方法について

f:id:tyoshikawa1106:20150705154119p:plain

新規および変更された Apex クラス

Summer'15でSystem.Date クラスの変更がありました。APIバージョン 34.0 以降では、Date.valueOf はオブジェクトを時間情報のない有効な Date に変換するようになり、Datetime データ型の変数を Date に変換するには、Datetime.date メソッドを使用するようになったとのことです。この変更についてDeveloper環境で確認してみました。


行動の開始日項目を使って確認してみます。
f:id:tyoshikawa1106:20150704135123p:plain


次のようにSystem.debug()で値を表示します。
f:id:tyoshikawa1106:20150704135414p:plain


デバッグ結果です。
f:id:tyoshikawa1106:20150704135600p:plain


sObject型とDate.valueOf()は時間部分の値も考慮された結果となります。DateTime.date()を使用することで時間部分は0:00として扱われ、-9hされない日付を取得できました。


対象日時の時間が0時ではない場合も確認してみました。
f:id:tyoshikawa1106:20150704135741p:plain


デバッグ結果です。
f:id:tyoshikawa1106:20150704135932p:plain


このようにDateTime.date()を使用すると時間部分は0:00として扱われます。