要約
Blue Prismで日付計算をマスターする方法を解説します。特に、AddMonths関数は「大の月」「小の月」「うるう年の2月」に対応しているため、非常に便利です。他にも、AddDaysやAddYearsの代替手段もご紹介。簡単にnか月後の日付を求められます。
キーワード
本記事は、以下に関心のある方におススメです。
- Blue Prism
- 日付計算
- AddMonths
- うるう年
- AddDays
目次
- はじめに
- Blue Prismの日付計算関数
- AddMonthsの詳細と使い方
- その他の関数と代替手段
- まとめ
- リファレンス(本記事で書かなかったこと)
本記事は、以下を具体的に説明しています。
- 月末の日付を求める方法
- 次の15日の日付を求める方法
- 今月の最終営業日を求める方法
はじめに
この記事は、Blue Prismでマスターする日付計算: n日後、n営業日後の日付を簡単に求める方法の続編となります。前回は基本的な日付計算の重要性について触れましたが、今回はより高度な日付計算のテクニックに焦点を当てます。
Blue Prismの日付計算の重要性
日付計算は、業務自動化において頻繁に必要とされる操作です。特に、締め日や期限日を計算する際には、正確な日付計算が不可欠です。本記事では、Blue Prismでの日付計算をより効率的に、かつ正確に行うための方法をご紹介します。
Blue Prismの日付計算関数
以下は、Blue Prismで利用できる日付計算関数、および、利用できない日付計算関数を一覧化し、利用できないものの代替手段を表形式でまとめたものです。AddMonths、AddDaysが利用できる一方で、AddYears、AddHours、AddMinutes、AddSecondsが利用できないことにご注意ください。
関数名 | 単位 | 利用可否 | 特徴・代替手段 |
---|---|---|---|
AddYears | 年 | 不可 | AddMonths([date], 12 * [n]) で代替 |
AddMonths | 月 | 可 | 「大の月」「小の月」「うるう年の2月」問題を処理 |
AddDays | 日 | 可 | [date] + MakeTimeSpan([n], 0, 0, 0) でも可 |
AddHours | 時 | 不可 | [time] + MakeTimeSpan(0, [n], 0, 0) で代替 |
AddMinutes | 分 | 不可 | [time] + MakeTimeSpan(0, 0, [n], 0) で代替 |
AddSeconds | 秒 | 不可 | [time] + MakeTimeSpan(0, 0, 0, [n]) で代替 |
AddMonthsの詳細と使い方
特に注目すべきはAddMonths関数です。この関数は「大の月」「小の月」「うるう年の2月」の問題をうまく処理してくれます。
注:以下では、「計算ステージにて、式[x] + [y]
の結果を、データアイテム[z]
に保存する操作」を、[z] = [x] + [y]
と書きます。これは、記事を書く上での便宜的な記法であり、実際のBlue Prismでは書けないことにご注意ください。
基本的な使い方
[newDate] = AddMonths([oldDate], 1)
うるう年の2月について
例えば、AddMonths(2024/1/31, 1)
とした場合、戻り値は2024/2/29
となります。
実践例
月末の日付を求めたい
締め日が月末の場合など、月末の日付を求めたいことがあります。月初なら1日固定ですが、月末は28日から31日までのパターンがあります。日本には、いわゆる「小の月」を覚えるための「西向く侍」という語呂合わせがあります。しかし「小の月の判定」を実装するなら、フローが複雑になるでしょう。うっかり、うるう年の考慮を忘れるかもしれません。
発想を転換しましょう。月初を求めることが容易であるなら、一度次月の月初に移動して、その前日に戻ってくればよいのです。ポイントとなるのは、確実に次月に移動する方法ですが、AddMonths関数が活躍します。
- 現在の日付を取得:
[currentDate] = Today()
- 次月に移動:
[nextMonth] = AddMonths([currentDate], 1)
- 月初に移動:
[firstDayOfNextMonth] = ToDate(FormatDate([nextMonth], "yyyy-MM-01"))
- 前日に移動:
[endOfThisMonth] = AddDays([firstDayOfNextMonth], -1)
次の15日の日付を求めたい
日本には「五十日(ごとおび)」という慣習があります。5の倍数の日は決済日に設定されることが多く、道路が混雑するとも言われます。次の15日の日付を求めたいことがあるでしょう。現在の日付により、当月か次月のいずれかとなります。先に「現在の日付が15日以前か」を判定してもよいでしょう。間違えないようにする(Look Before You Leap)アプローチです。このアプローチは有用ですが、条件によっては、フローが複雑になるかもしれません。
発想を変えて、間違ったらごめんなさいする(Easier to Ask for Forgiveness than Permission)アプローチを試してみましょう。具体的には、まず当月の15日を求めて、その日付をチェックし、過去日付だった場合は次月の15日に修正します。ポイントとなるのは、15日という日付を保持したまま、次月に移動する方法ですが、AddMonths関数が活躍します。
- 現在の日付を取得:
[currentDate] = Today()
- 当月の15日を取得:
[targetDate] = ToDate(FormatDate([currentDate], "yyyy-MM-15"))
- 過去日付?:
[isPast] = [targetDate] < [currentDate]
- 過去日付の場合のみ、次月に移動:
[targetDate] = AddMonths([targetDate], 1)
その他の関数と代替手段
AddYearsやAddHoursなどは直接の関数がありませんが、上記の表にあるように代替手段が存在します。これらをうまく活用することで、多様な日付計算が可能です。
まとめ
Blue Prismで日付計算を行う際には、AddMonths関数が非常に便利であることを解説しました。特に「大の月」「小の月」「うるう年の2月」の問題に対応している点が優れています。また、その他の関数についても代替手段を提供しました。
リファレンス(本記事で書かなかったこと)
n日後、n営業日後の日付を簡単に求める方法を知りたい
本記事の前編となる、Blue Prismでマスターする日付計算: n日後、n営業日後の日付を簡単に求める方法をご参照ください。基本的な日付計算の重要性について触れています。前営業日の日付を求めることもできます。
今月の最終営業日を求めたい
まず、本記事を参考に、今月の最終日(月末の日付)を求めます。次に、前回記事(Blue Prismでマスターする日付計算: n日後、n営業日後の日付を簡単に求める方法)を参考に、「カレンダー」オブジェクトの「稼働日を追加」アクションを用いて、今月の最終日の次営業日を求めます。最後に、同じアクションを用いて、最終日の次営業日の前営業日を求めます。そうすることで、今月の最終営業日を求めることができます。
別の方法としては、当社作成の「NEO - カレンダー」オブジェクトなら、「営業日日付取得_月内」アクションの「カレンダー名」にカレンダー名(事前にシステムマネージャーで定義しておいたカレンダー名)を、「基準日」に現在の日付を、「月末からカウント」にTrueを、「営業日番号」に1を指定することで、最終営業日を求めることができます。こちらは、1ステップで済む利点があります。当社のエンジニアがロボット開発をおこなう中で、「こんな機能があったらいいのにな」と思うたびに、水平思考で「そんな機能がないなら、自分たちで作ってしまえばいいじゃない」と取り組んできた成果が、当社「NEアセット」です。オブジェクトにより、柔軟に機能拡張できるのは、Blue Prismという製品の強みです。
その他の日付計算について知りたい
組み込み関数や、公式オブジェクトの「カレンダー」をチェックしてみるとよいでしょう。当社作成の「NEO - カレンダー」にも、特に日本の業務自動化に役立つ便利なアクションを用意してあります。無料でご利用いただけますので、一度お試しください。
当社サービスのご紹介
いかがでしたか?
本記事を参考に、Blue Prismの開発を効率化していただけると幸いです。
BP新規導入またはライセンスを他社から乗り換えで、いまなら3時間分の無料問い合わせチケットつき! ※お問い合わせ内容冒頭に【ブログ】とご記入ください。
当社では、生成AIの活用にも積極的に取り組んでいます。本記事も、生成AIの支援を受けて執筆しました。