2013-03-22 84 views
2

一直令人困惑......就像我們比較時間一樣,絕對不推薦使用字符串......但是如果它的格式是(HH:mm:ss)。我應該如何比較他們做些什麼?如何比較一個時間和另外兩個時間?

例如: Target1時:九點00分00秒 目標2:23時00分00秒

如何執行邏輯用於比較在輸入比目標1目標2相比更大和更小?

if(input > Target1 && input < Target2){ 
    //do statement A 
}else{ 
    //do statement B 
} 

所以如果我輸入的時間是10:00:00,它應該運行語句中的 ,如果輸入的時間是23點01分00秒,它應該運行B中將 我應該怎麼做呢?大於(>)並小於(<)適合的時間格式?

+0

請檢查此鏈接。 http://stackoverflow.com/a/6377337/614807 – 2013-03-22 07:18:08

回答

1

將它們視爲字符串,可以將它們從SimpleDateFormat轉換爲Date對象。

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); 

最簡單的方法是通過做

long time1 = sdf.parse(Target1).getTime(); 
long time2 = sdf.parse(Target2).getTime(); 
long inputTime = sdf.parse(input).getTime(); 

這樣,你基本上是做一個整數比較將它們轉換爲毫秒的量,並且可以對所有的日期時間生意算了。

if(inputTime > time1 && inputTime < time2) 
0
SimpleDateFormat df=new SimpleDateFormat("hh:mm:ss");    
Date d1=df.parse(dateToPars); 

d1.after(otherTimeYouWantTocompare); OR 
d1.before(otherTimeYouWantTocompare); 

但是你必須提供一次在提到格式

+0

我在之前的「之後」和「之前」嘗試之前在其他帖子中說過,但它不適用於我...... =( – 2013-03-22 07:27:03

+0

你是否收到任何異常?或者你沒有得到正確的結果? – 2013-03-22 11:09:35

0

您可以用壓延機功能.getTimeInMillis()計算不同勢,並獲得不同勢的2不同勢時,在這裏你需要設置只有您在Calender的具體時間並與其進行比較

try{ 
      Calendar calender = Calendar.getInstance(); 
      Calendar calDb = Calendar.getInstance(); 
      Calendar matchd = Calendar.getInstance(); 

      mYear = calender.get(Calendar.YEAR); 
      mMonth = calender.get(Calendar.MONTH); 
      mDay = calender.get(Calendar.DAY_OF_MONTH); 

      mendYear = calDb.get(Calendar.YEAR); 
      mendMonth = calDb.get(Calendar.MONTH); 
      mendDay = calDb.get(Calendar.DAY_OF_MONTH);  
         // Here you can change day values   
        calDb.set(Calendar.DAY_OF_MONTH, mDay-1); 

      strbeforedate = mDateFormat.format(calDb.getTime()); 
      curentdate = mDateFormat.format(calender.getTime()); 

      calDb.setTime(mDateFormat.parse(strbeforedate)); 
      calender.setTime(mDateFormat.parse(curentdate)); 



      String mydate = "2013.03.14 03:11"; 
      String mdatetime = ""; 

      deletepath = new ArrayList<String>();   

       try{ 
        // here your matching goes and pass date here 

        matchd.setTime(mDateFormat.parse(mdatetime)); 
        long diff = calDb.getTimeInMillis() - calender.getTimeInMillis(); 
        long matchdiff = matchd.getTimeInMillis() - calender.getTimeInMillis(); 
         if(diff < matchdiff){ 

            // do your work here 
         }else{ 

         // do your else work here 

         } 
       }catch(Exception e){ 
        e.printStackTrace(); 
       }     
     } 

     }catch(Exception e){ 
      e.printStackTrace(); 
     } 

    }