案例如下:電商品台新增一個促銷活動,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