4
A
回答
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())
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);
這不起作用,因爲日期如下存儲 週四1月1 16點34分50秒GMT 1970年 – deltanovember 2011-05-17 13:22:47
肯定。檢查我的更新 – Bozho 2011-05-17 13:32:42