ipex

Salesforceの情報や趣味(ゲーム等)についてフリーに

日時項目を指定の形式に変換して表示する数式

2015-10-01 15:00:00

この形式で満足できない場合に、数式項目を作るのは常套手段かと思います。
特にCSVとかPDF出力の際には形式が指定されていることが多いNE。


ってことで、よく使ってる数式を1つ載せておきます。
毎回1から作ると面倒だし、こういうの1つは用意しておくと捗ります。

ちなみに今回は、和暦 + MM月 + DD日 + (曜日) + HH時 + MM分 のパターン。
一番面倒なやつですね・・・

/* DateTime を 平成XX年MM月DD日(曜日)HH時MM分 に変換する */

/* 年 */
IF(ISBLANK( Deadline__c ), "", "平成") & 
TEXT(YEAR(DATEVALUE( Deadline__c )) - 1988) & 
IF(ISBLANK( Deadline__c ), "", "年") & 

/* 月 1桁だったら0埋め */
IF(LEN(TEXT(MONTH(DATEVALUE( Deadline__c )))) = 1, "0", "") & 
TEXT(MONTH(DATEVALUE( Deadline__c ))) & 
IF(ISBLANK( Deadline__c ), "", "月") & 

/* 日 1桁だったら0埋め */
IF(LEN(TEXT(DAY(DATEVALUE( Deadline__c )))) = 1, "0", "") & 
TEXT(DAY(DATEVALUE( Deadline__c ))) & 
IF(ISBLANK( Deadline__c ), "", "日") & 

/* 曜日 */
IF(ISBLANK( Deadline__c ), "",
  CASE(MOD(DATEVALUE( Deadline__c ) - DATE(1900, 1, 7), 7),
    0, "(日)",
    1, "(月)",
    2, "(火)",
    3, "(水)",
    4, "(木)",
    5, "(金)",
    "(土)"
  )
) & 

/* 時(24h表記) */
IF(LEN(TEXT(VALUE(MID(TEXT( Deadline__c ), 12, 2)) + 9 )) = 1, "0", "") & 
IF(VALUE(MID(TEXT( Deadline__c ), 12, 2 )) + 9 >= 24,
  /* 24時以降 */
  "0" & TEXT( (24 - (VALUE(MID(TEXT( Deadline__c ), 12, 2)) + 9 )) * -1 ),
  /* それ以外 */
  TEXT(VALUE(MID(TEXT( Deadline__c ), 12, 2 )) + 9)
) & 
IF(ISBLANK(Deadline__c), "", "時") & 

/* 分 */
IF(LEN(TEXT(VALUE(MID(TEXT( Deadline__c ), 15, 2)))) = 1, "0", "") & 
TEXT(VALUE(MID(TEXT( Deadline__c ), 15, 2))) & 
IF(ISBLANK( Deadline__c ), "", "分")