2011-03-02 34 views
0

我要顯示一個頁面只有在滿足以下條件,即Java的日期確認

if(system_date >=start_date){ 
if(system_date<=End_date){ 
    //Do some thing 
} 
} 

說,例如start_date = 08-03-2011end_date = 10-03-2011

我無法弄清楚這一點。善意幫助。

+1

嘗試使用喬達時間。 – OrangeDog 2011-03-02 10:40:50

+0

你的實際問題是什麼?解析日期?編寫比較邏輯? – 2011-03-02 10:53:21

+0

其實我從dd-MM-yyyy格式的數據庫中獲取開始日期和結束日期,並且必須與系統日期進行比較 – SHV 2011-03-02 11:23:01

回答

1

正如OrangeDog所說,我會用Joda Time

您可以創建一個DateTimeInstant的開始日期和結束日期,然後使用類似:

if (startDate.isBeforeNow() && endDate.isAfterNow()) 

或許

DateTime now = new DateTime(); // Possibly provide time zone etc if you want 
if (startDate.compareTo(now) <= 0 && now.compareTo(endDate) <= 0) 

甚至:

Interval valid = new Interval(startDate, endDate); 
if (valid.containsNow()) 

基本上你有很多選擇取決於你的確切要求已廢除:)

+0

現在,Joda是標準日期相關類的唯一聲音替代品。除了許多實用功能之外,它遠遠優越並且更易於理解。 – Anonymous 2011-03-02 11:08:29

3
Date now = new Date(); 
if ((now.after(startDate) || now.equals(startDate)) && ((now.before.endDate) || now.equals(endDate)) 
{ 
    // do something 
} 

我同意,約達時間是非常好的,但你必須權衡這個簡單的要求,是否值得另一JAR依賴性。有時你只需要一些簡單的東西。

+0

除非我有一個非常好的理由不採取任何依賴關係,否則只要我有很多*任何*日期/時間工作要做,就會包括Joda。額外的jar文件的成本與擁有更好設計的API的可讀性好處有什麼關係? – 2011-03-02 11:24:41

+0

@Jon - 我同意,但如果規定的要求是唯一需要的日期/時間工作,我可能會忍不住要求。 – duffymo 2011-03-02 12:14:08

+1

除了我們已經看到有解析涉及 - 使用Joda的線程安全格式化器更容易完成,等等...... – 2011-03-02 12:16:18

0

如果你不想使用外部的lib,你可以使用CalendarsetTime()創建日曆出一個給定的日期,然後使用compareTo來比較兩個日曆實例。

Calendar start = Calendar.getInstance(); 
start.setTime(startDate); 

Calendar current = Calendar.getInstance(); 
current.setTime(systemDate); 

Calendar end = Calendar.getInstance(); 
end.setTime(endDate); 

if (current.compareTo(start) > 0 && current.compareTo(end) < 0) { 
    //Do some thing 
} 

當然,你必須創建日曆實例時採取時區和語言環境的關懷。