2013-08-19 142 views
0

我有一個java web應用程序必須處理資源管理。java驗證日期

例如

Dept  Min  Max Resource Effective Date  Last Date 
HR  1  3  Alex  08/19/2013  12/31/2013 
HR  1  3  Adam  08/19/2013  12/31/2013 

IT  2  5  Jade  08/19/2013  10/31/2013 
IT  2  5  Robert  11/01/2013  12/31/2013 
IT  2  5  Lisa  08/19/2013  12/31/2013 

我有具有預設最小/最大員工我可以分配作爲管理者不同部門。所以人力資源部的最低分爲1分,最高分爲3分,我從今天到年底分配了2分。

在IT部門,我已經爲Jade和robert分配了一個部分日期,將它們計爲1。 Lisa進行端到端。它們在一起是在最小/最大範圍內的2。

基本上,底線是在任何時間點,我必須確保分配不會違反最小/最大規則。 所以,我想要關於如何在java應用程序中驗證這些場景的建議。任何你認爲有用的開源API。

+0

您是否找到針對您的問題的解決方案? – u6f6o

回答

1

如果我理解你的問題的權利,你基本上想要找出哪些區間重疊。關於日期,我通常傾向於使用http://joda-time.sourceforge.net/,因爲它與開箱即用的java Date相比具有非常乾淨和漂亮的API。

喬達時間還提供間隔和檢查的時間間隔重疊的方法:http://joda-time.sourceforge.net/apidocs/org/joda/time/Interval.html#overlap(org.joda.time.ReadableInterval)

儘管如此,它並沒有爲我工作,我想檢查每一天的基礎上,因此,我必須實現它自己使用喬達時間間隔作爲基本對象:

public static boolean checkInteraction(Interval one, Interval another) { 
    return ((one.getEnd().equals(another.getStart()) || one.getEnd().isAfter(another.getStart())) && 
      (another.getEnd().isAfter(one.getStart()) || another.getEnd().equals(one.getStart()))); 
} 

到位有了這個,你可以通過間隔,並檢查它們重疊/相互作用,如果超過你的最大數量進行檢查。