たまに日付/時間項目に数式でデフォルト値を設定するが、 今回、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時間を表す