Apexで実装していると、日付だけではなく曜日を求めたいことがあります。
基準日を定義して複雑なロジックでもってゴリゴリと曜日を求める方法も見かけますが、実は曜日を求めるのは難しくないんです。
今回ご紹介する算出方法も、もちろんコピペで使えるのでこのページのブックマークだけは忘れずに!
日付から曜日を算出する
Datetime dt = Datetime.now();
String yobi = dt.format('E');
if(yobi == 'Mon') {
yobi = '月';
}else if(yobi == 'Tue') {
・・・
}
解説
曜日を求めるには、Datetimeクラスのformat()メソッドを使います。
引数は1つ。
Stringでフォーマット文字列を渡してあげるだけの超簡単指定!
フォーマット文字列は、JavaのSimpleDateFormatに則っているので、Java経験があれば馴染みがあるのではないでしょうか。
また、フォーマット文字列を変えるだけで、色々なフォーマットに変換してくれるので、いちいちロジックをゴリゴリ書かなくて済むため、とても助かります。
ただし、1つ注意事項があります。
format()メソッドで返ってくる曜日は英語表記の曜日です。
日本語の曜日にしたい時は、英語から日本語への変換が必要になります。
Apex開発者ガイドと、Java SimpleDateFormatへのリンクを貼っておきますので、ご参照ください。
→Apex開発者ガイド「Datetimeクラスformat(dateFormatString)」
→Java SimpleDateFormat
終わりに
曜日はユーザにとって日付と同じ位、日常的に使う情報です。
運用業務は、「○曜日にコレやって、△曜日にアレをやる。」といったように曜日毎に実施するものがあったりします。
ですので、システム上で曜日が表示されていると時間軸が把握しやすくなり、ユーザ体験が向上しますね!
日頃から、「言われたことだけやっていればいいや」なんて思わずに、「ユーザにとって利便性の高いシステムって何だろう?」と
考えながら業務に関わっていきたいものです。