連載 各データ型の処理:日付
0 693

このトピックでは、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   // 日曜日


0 693
みんなのツイート (0)

関連サマリー


  • テクニカル 0 Votes 1000 閲覧数


    このトピックでは、Pegaでの文字列処理の方法を取り上げて説明します。

    文字列型(Pega type: Text)は、Pega内部でJavaのString型を使用し表現されます。

    チェック処理

    Pega標準で用意された関数を一部抜粋します。

    @isDouble(inputString)
    文字列が有効な倍精度数を表しているかどうかをチェックします。@isInteger(inputString)
    文字列が有効な整数を表しているかどうかをチェックします。@isLiteral(inputString)
    入力がリテラルかプロパティ参照かをチェックします。検索処理

    Pega標準で用意された関数を一部抜粋します。

    @indexOf(strStringToSearch,strStringToSearchFor)
    strStringToSearchForにstrStringToSearchが最初に現れたインデックスを返します。値が見つからない場合は -1 を返します。@substring(stringToUse,startIndex,endIndex)

    文字列のインデックスは0から数えられます。変換処理

    Pega標準で用意された関数を一部抜粋します。

    @toDate(inputString)
    文字列を日付型に変換します。@toDateTime(inputString)
    文字列を日時型に変換します。@toDecimal(inputString)
    文字列を数値型に変換します。@toInt(inputString)
    文字列を整数型に変換します。@toLowerCase(inputString)
    文字列をすべt小文字に変換します。@toUpperCase(inputString)
    文字列をすべて大文字に変換します。編集処理

    Pega標準で用意された関数を一部抜粋します。

    @replaceAll(aBaseString,aOriginalChars,aNewChars)
    文字列aBaseStringのサブ文字列aOriginalCharsをaNewCharsに置き換えて返します。@trim(str)
    strの頭と後ろのスペースを削除して返します。補足

    テキスト関連のPega標準関数はおもに「String」というライブラリで纏めて公開されているため、Designer StudioのRecordsブラウザで確認できます。


  • テクニカル 0 Votes 1727 閲覧数


    用途

    日時を指定フォーマットで文字列に変換する。

    構文

    @FormatDateTime(strDateTime, strPattern, strTimeZone, strLocale)

    パラメータ strPattern

    javaのSimpleDateFormatクラスの日付パターンに従っています。

    文字説明出力例(記述例)G紀元AD(G)y年1996(yyyy); 96(yy)M月July(MMMM); Jul(MM); 07(MM)w年における週27(ww)W月における週2(W)D年における日189(DDD)d月における日10(dd)F月における曜日2(F)E曜日の名前Tuesday(EEEEEEE); Tue(EEE);u 曜日の番号(1:月曜、・・・7:日曜)1(u)a午前/午後PM(a)H一日における時(0 - 23)00(HH)k一日における時(1 - 24)24(kk)K午前/午後の時(0 - 11)00(KK)h午前/午後の時(1 - 12)12(hh)m分30(mm)s秒55(ss)Sミリ秒978(SSS)z一般的なタイムゾーンPacific Standard Time; PST; GMT-08:00