ライトコースのkintoneの小アイデア② 1か月後の同日を求める方法
kintoneでは時間計算が「秒単位」で行われるため、数日後の日付を求める場合には問題ありませんが、「数か月後の同日」や「数年後の同日」を求める際には、大の月や小の月、うるう年を考慮しないため、正確な日付を求めることができません。
例えば、1月15日の1か月後の同日を求める際に、30日後として計算すると、1月が「大の月」であるため2月14日となってしまいます。
このようなkintoneの特性を回避して、1か月後の同日を求める方法として、以下の対応を行います。
用意するもの
- 元の日付 フィールド(日付フィールドタイプ)(入力用)
- 元の日付の年 フィールド(計算フィールドタイプ)(元の日付の年部分を取り出す)
- 元の日付の月 フィールド(計算フィールドタイプ)(元の日付の月部分を取り出す)
- 元の日付の日 フィールド(計算フィールドタイプ)(元の日付の日部分を取り出す)
- 元の日付の翌年 フィールド(計算フィールドタイプ)(翌月の年を計算)
- 元の日付の翌月 フィールド(計算フィールドタイプ)(翌月を計算)
- 翌月日 フィールド(文字列(1行)フィールドタイプ)(1か月後の日付を表示)
各計算式
DATE_FORMAT(元の日付,"YYYY","Etc/GMT")
DATE_FORMAT(元の日付,"M","Etc/GMT")
DATE_FORMAT(元の日付,"d","Etc/GMT")
IF(AND(元の日付の年 = 2024, 元の日付の月 = 12), 2025,
IF(AND(元の日付の年 = 2024, 元の日付の月 <> 12), 2024,
IF(AND(元の日付の年 = 2025, 元の日付の月 = 12), 2026,
IF(AND(元の日付の年 = 2025, 元の日付の月 <> 12), 2025,
IF(AND(元の日付の年 = 2026, 元の日付の月 = 12), 2027,
IF(AND(元の日付の年 = 2026, 元の日付の月 <> 12), 2026,
:
:(適宜20年先くらいまで用意)
:””))))))
IF(元の日付の月 <= 11, 元の日付の月 + 1, 1)
元の日付の翌年 & "-" & 元の日付の翌月 & "-" & 元の日付の日
この方法では、元の日付の年と月と日を計算フィールドに取り出すことで、数年後や数か月後の同日を正確に求めることができます。
ただし、④の計算式がハードコードになっているため、アプリの使用期間が長くなると計算式の修正が必要になります。