LoginSignup
0
0

More than 1 year has passed since last update.

【Salesforce Apex】 時間のデータ型項目をHH:mmフォーマットに変換する方法

Last updated at Posted at 2022-12-09

問題

時間のデータ型項目はTimeクラスのインスタンスなので、Timeクラスは時間をHH:mmフォーマットのStringに変換する関数持ってないため、工夫しないといけません。
例:
以下のコードで無理やり直接GMTのStringに変換すると

String str = String.valueOfGmt(p.StartTime__c);

以下のエラーが発生されました。

Method does not exist or incorrect signature: void valueOfGmt(Time) from the type String

ただ、StringのvalueOfで変換はできましたが、正規表現でStringを切り取らないといけません。

String str = String.valueOf(p.StartTime__c);
// 結果
// 10:00:00.000Z

解決

正規表現を使わず、一番適切な方法のステップは以下のようになります。

  • DateTime.now()で新規DateTimeを作成して
  • 更に、DateTime.newInstanceGmtで時間を上記の時間の値に置き換える
  • String.formatGMT('HH:mm')で変換する
    例:
DateTime b = DateTime.now();
b = DateTime.newInstanceGmt(b.year(), b.month(), b.day(), p.StartTime__c.hour(), p.StartTime__c.minute(), 0);
String timeStr = b.formatGMT('HH:mm');
// 結果
// 10:00

ユースケース

  • 時間のデータ型をJSON化する時に使えます。
  • ローカル時間で表示させる際に使えます。

もし他のやり方があれば、ぜひコメントをお願いします! :bow_tone3:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0