2011-05-17 52 views

回答

15

首先,你需要分析這個:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss") 
Date date = sdf.parse(endTime); 

然後您可以創建使用日曆進行比較的時候:

Calendar c = Calendar.getInstance(); 
c.setTime(date); 
Calendar now = Calendar.getInstance(); 
if (now.get(Calendar.HOUR_OF_DAY) > c.get(Calendar.HOUR_OF_DAY) .. etc) { .. } 

或者,你可以創建一個日曆中now,並設置其HOUR,MINUTE和SECOND字段與新日曆中的字段一起使用。

隨着joda時間,你可以做類似的事情。

new DateMidnight().withHour(..).widthMinute(..).isBefore(new DateTime()) 
+0

這不起作用,因爲日期如下存儲 週四1月1 16點34分50秒GMT 1970年 – deltanovember 2011-05-17 13:22:47

+0

肯定。檢查我的更新 – Bozho 2011-05-17 13:32:42

2
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss"); 

Date d1=df.parse(endTime); 
Date d2=df.parse(startTime); 

long d1Ms=d1.getTime(); 
long d2Ms=d2.getTime(); 

if(d1Ms < d2Ms) 
{ 
    //doSomething 
} 
else 
{ 
    // something else 
} 
+0

HH(0-23),而不是hh(1-12) – Bozho 2011-05-17 12:52:34

1

由於Java有純時間值(合併只是時間/日期值)沒有內置支持,你可能會更好過自己實施的比較。如果時間格式化爲HH:mm:ss,則應該這樣做:

boolean beforeNow = 
    endTime.compareTo(
     new SimpleDateFormat("HH:mm:ss").format(new Date())) < 0; 

該代碼不處理日期更改。我不確定您是否希望在23:00之前在01:00之前或之後處理該代碼,但代碼將這兩個時間視爲同一日期,例如, 23:00在01:00之後。

0

當地時間

的Java 8及其java.time包之前,爪哇缺乏的 「本地時間」 任何概念。這意味着從任何時間和任何時區脫離的時間。當地時間就是一天中的時間,而不受時間限制。

Java 8中的Joda-Time庫和java.time包都提供LocalTime類。

時區

時區確定的「現在」的本地時間是至關重要的。很明顯,巴黎的「掛鐘時間」與蒙特利爾同時不同。

如果您省略時區,則應用JVM的當前默認時區。更好地指定,而不是隱式地依賴當前的默認值。

約達時間

實施例的代碼Joda-Time 2.7。

LocalTime then = new LocalTime("16:30:45"); 
Boolean isNowBefore = LocalTime.now(DateTimeZone.forID("America/Montreal")).isBefore(then);