Apexで開発をしていると必ずと言っていい程登場するDate型やDatetime型。
要件や仕様に沿って実装していると、日付フォーマットを加工したい時がありますが、SalesforceのDate型、Datetime型って厄介ですよね。。。
「どうして素直にいうことを聞いてくれないんだ!」と怒りをまき散らしている人を見かけたことがあります(;・∀・)汗
怒りをまき散らさないにしても、
プログラマーはきっと、こんな思いで業務に就いていると思います。
- コーディング量は増やしたくない
- スマートにかっこよくコーディングしたい
- シンプル イズ ベスト!
そんな前向きなプログラマーの方に、ちょっとしたApexの小技ををご紹介しますね!
今回ご紹介する、1桁しかない月と日をゼロ埋めする方法は、なんとif文もfor文も使いません!
これをマスターすれば、生産性が飛躍的に向上するはずです♪
もちろんコピペで使えるものなので、このページのブックマークを忘れずに!
1桁の月と日のゼロ埋め
【月】
Datetime dt = Datetime.now();
String tmpMonth = String.valueOf(dt.month()).leftPad(2, '0');
【日】
Datetime dt = Datetime.now();
String tmpDay = String.valueOf(dt.day()).leftPad(2, '0');
解説
ゼロ埋めするには、StringクラスのleftPad()メソッドを使います。
引数は2つ。
第1引数には、ゼロ埋めした後の桁数(Stringなので文字数のこと)を指定します。
第2引数には、埋める文字を指定します(ゼロで埋めたいから ‘0’ ですね)。
つまり、 第1引数に指定した長さになるまで、ベース文字列の左側に 第2引数で指定した文字を埋め込んだStringを返します。
Apex開発者ガイドへのリンクを貼っておきますね!
→「StringクラスleftPad(length, padStr)」
終わりに
ゼロ埋めした後の値がStringで返ってくるので必ずしも使い勝手が良いとは言えませんが、
桁数を揃えた方が表示上の視認性が向上し、データ処理がしやすい場合があります。
まずは用途を確認してゼロ埋め要否を確定させて使うのが良いでしょう。
この記事を読んだあなたのSFDCライフが充実しますように!