2013-12-17 53 views
0

是否有一個Java庫,它使我可以編寫時間匹配表達式,返回true/false,我可以動態處理?想法是在運行時加載的屬性文件中寫這樣的匹配表達式,所以我不需要在Java中重寫以防變更請求?Java的時間表達式語言

+0

我不知道你在問什麼。但請參閱Joda Time,它是最全面的Java Date Time庫。 http://www.joda.org/joda-time/ –

+0

我是唯一一個不太明白這一點的人嗎?時間匹配?你在談論解析時間格式嗎,你是在談論一種用於比較不同時間對象的語言,這是一個相當於正則表達式的時間嗎?請更具體一些。 – Smallhacker

+0

看看[SimpleDateFormat](http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) –

回答

0

正如不是存儲可能是複雜的條件下更容易的解決方案,你有沒有考慮存儲的有效時間的表(或你想使用的任何單位)?

東西線沿線的:

6,7,8,12,13,14 
+0

謝謝,這是一個選項。 – newbie123

+0

我將使用Spring的SpelExpressionParser。例如parser.parseExpression(「T(java.util.Calendar).getInstance()。get(T(java.util.Calendar).HOUR_OF_DAY)> 15」); – newbie123

0

是否有一個Java庫,讓我寫時間表達式匹配返回真/假

是的!

考慮

java.util.Date 

你有

public boolean before(Date when) 
public boolean after(Date when) 
+0

謝謝,但我想將表達式存儲在屬性文件中並在運行時加載它。例如,這是表達式:(current_time> = 6和current_time <9)|| (current_time> = 12和curren_time <15) – newbie123

+0

爲什麼不使用groovy代碼並在[code](http://groovy.codehaus.org/Embedding+Groovy)中對它們進行評估。如果是用戶定義的代碼,則存在安全風險。 (請注意,jdk 1.7隨附JavaScript引擎) – mestachs

+0

謝謝!我會研究這個選項。在這種情況下沒有安全風險,因爲應用程序部署在孤立的環境中。 – newbie123