簡體   English   中英

如何獲得流口水過去日期列表中的最大日期?

[英]How to get a maximum date among the list of past dates in drools?

從訂單列表中,我需要收集到requesteffDate和requesteffTime過去的日期,並獲取過去日期的最大值。

function boolean dateCheck(Date effdt, Date efftm) {
  String efffdt = new SimpleDateFormat("yyyyMMdd").format(effdt);
  String effftm = new SimpleDateFormat("HHmm").format(efftm);
  Date effdttm = new SimpleDateFormat("yyyyMMddHHmm").parse(efffdt + "" + effftm);
  return effdttm.before(new Date());
} 

rule "finding past maximum date"
when
  $company : Company( $date:requesteffDate, $time:requesteffTime, $reqdt : requesteffDate.getTime(), $reqtm : requesteffTime.getTime() )
eval(dateCheck($date,$time))
accumulate(Orders( effectiveDate != null,
                   effdate:effectiveDate.getTime()<$reqdt),
           maxEffDate:max(effdate))
then
  //error

這樣做的時候

accumulate(Orders(effectiveDate!=null,
                  effdate:effectiveDate.getTime()<$reqdt),
                  maxEffDate:max(effdate))

我正在將maxEffDate作為-9223372036854775808轉換時顯示1940

我嘗試使用min functionn的結果相同,它顯示2262。

我的課是這樣的。

Class Company{
  private Date requesteffDate;
  private Date requesteffTime;
  private Employee emp;
  private List<Orders> orderlist;
}

Class Orders{
  private Date effectiveDate;
  private Date effectiveTime;
}

-9223372036854775808是Long.MIN_VALUE。 這是結論性的,表明累加器沒有找到任何定單。

確保您插入一些匹配的訂單事實。

添加一個警戒,使maxEffDate為!= Long.MIN_VALUE。

停止使用Date作為一天中的時間值:要么使用LocalDate和LocalTime,要么將日期和時間組合為單個Date值。

請注意,日期和時間的轉換不受您的語言環境設置的影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM