drools 7 日期時間段校驗


案例如下:電商品台新增一個促銷活動,2019年10月份,限時每天10點至13點,下單9折活動。

首先可以用 date-effective 和 date-expires 兩個屬性限制日期區間為2019-10-01 至 2019-10-31,但是每天10點至11點該怎樣限制呢?

1、方法一:利用function

drl文件如下所示:

package rules;//包名
//引入類庫
import java.text.SimpleDateFormat
import java.util.*
 
//處理時間的function
function boolean checkDate(String st ,String et){
     Calendar calendar = Calendar.getInstance();
     SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
     Date startTime = sdf.parse(st);
     Date endTime = sdf.parse(et);
     Date nowCal = sdf.parse(sdf.format(calendar.getTime()));
     if(nowCal.after(startTime)  && nowCal.before(endTime)){
        return true;
     }else{
         return false;
     }
}
 
//規則
rule "function_rule"
//屬性限制起止日期
date-effective '2019-10-01'
date-expires '2019-10-31'
 
when
//對時間點進行校驗
eval(checkDate('10:00:00','13:00:00'))
then
System.out.println("success function_rule");
end

2、方法二:利用Calendar判斷

package rules;
 
import java.text.SimpleDateFormat
import java.util.*
 
rule "method_2"
date-effective "2019-10-01"
date-expires "2019-10-31"
when
$c:Calendar((get(Calendar.HOUR_OF_DAY) >=10 && <17),(get(Calendar.MINUTE) >=0 && <=59),(get(Calendar.SECOND) >=0 && <=59))
//(get(Calendar.HOUR_OF_DAY) >=10 && <17) 等價於 (get(Calendar.HOUR_OF_DAY) >=10,(get(Calendar.HOUR_OF_DAY)<17
then
System.out.println("success method_2");
end

引自: https://blog.csdn.net/u010952582/article/details/102698881


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM