Memos About Salesforce

Salesforceにハマってたこと!

DATETIMEVALUE 時間計算

たまに日付/時間項目に数式でデフォルト値を設定するが、 今回、GMT時間・標準時間になるための計算についてメモをします

この記事の目次

日付計算

デフォルト値設定

まず 日付/時間項目にデフォルト値を設定する場合があるかと思う 特に出勤や退勤の項目とか、ニーズによって、様々な設定も必要になってくる デフォルトパターン1:Now() デフォルトパターン2:数式で違う項目の値をなんかの計算結果を設定する

厄介はデフォルトパターン2、 なぜなら、別の項目の値を持って来て、計算するとText()はたまに使うかも、 使ったらどうなる?

TEXT()で変換後の値

日付値を TEXT(NOW()) 関数でラップして、 NOW() は GMT にオフセットされます。 通常、NOW() は表示される時点でユーザのタイムゾーンに変換されますが この場合はテキストに変換されているため、この変換が行われません。 そのため、サンフランシスコ時間 (GMT-7) の 8 月 1 日午後 5 時にこの数式を実行すると、 「現在の日時は、2013–08–02 00:00:00Z です」と表示されます。

ローカルの時間にさせる計算

DATETIMEVALUE()の値を「+」OR「ー」時間なら、

下記のようにできます

DATETIMEVALUE( 
    TEXT( DoDate__c ) & ' ' & 
    TEXT( DoHour__c ) & ':' &
    TEXT( DoMinutes__c ) & ':00' 
) - (9/24) 

TEXT()によってローカル時間に変換されないため、 DATETIMEVALUE()の結果をローカル日本に戻す (9/24):9時間を表す