このトピックでは、Pegaにおける日付の処理方法を纏めて説明します。
型
Pegaでは内部的にBigDecimal(com.ibm.icu.math.BigDecimal)型を使用して、日付の値(1970/01/01からの日数)を保持しています。
なお、YYYYMMDD形式の文字列として日付型プロパティの値を読み書きできます。
但し、から文字列を設定する場合、プロパティの値が自動的に1970101に設定されるため、「空白」の表示にするには、設定処理自体をしないようにしましょう。
計算処理
(日付の加減算を行う)
指定された日付より何日前又は、何日後の日付を計算するには、addDays()関数を使用します。
構文
@(Pega-RULES: BusinessCalendar).addDays(startDate, daysToAdd, useBusinessCalendar, calendarName)例
例1: @(Pega-RULES: BusinessCalendar).addDays("20190808",30,false,Default) ⇒ 20190907
例2: @(Pega-RULES: BusinessCalendar).addDays("20190808",-9,false,Default) ⇒ 20190730
(日数を求める)
二つの日付の間の日数を計算するには、differenceBetweenDays()関数を使用します。
構文
@differenceBetweenDays(firstDate, secondDate, useBusinessCalendar, calendarName)例
@differenceBetweenDays("20190808","20190701",false,DEFAULT) ⇒ 38
(月の末日を取得する)
Calendar cal = Calendar.getInstance();
DateTimeUtils dtu = ThreadContainer.get().getDateTimeUtils();
//get info of date in parameter
cal.setTime(dtu.parseDateTimeString(theDate));
calc.set(Calendar.DATE, c.getActualMaximum(Calendar.DATE));
Date lastDate = c.getTime();
return dtu.formatDateTime(dtu.formatDateTimeStamp(lastDate),"yyyyMMdd",null,null);
チェック処理
(営業日かどうかをチェック)
営業日かどうかをチェックするには、isBusinessDay()関数を使用します。
構文
@isBusinessDay(theDate, calendarName)例
例1: @isBusinessDay("20190803",DEFAULT) ⇒ true // 土曜日、法定休日でないため、営業日扱い
例2: @isBusinessDay("20190804",DEFAULT) ⇒ false // 日曜日