2011-09-28 54 views
0

我在我的偏好中有一些代表開始時間和結束時間的字符串。如何比較時間字符串的時間部分?

我寫了這個函數來確定當前時間是否在開始和結束時間內。日期字符串的格式是「HH:mm」。該函數採用來自首選項的字符串。

我敢肯定,我錯過了一些比較的代碼,因爲我解析返回一個是這樣的:

週四9月29日12時24分33秒EDT 2011

但所有我需要的是得到這個: 12:24

這是功能。你能幫我糾正編碼嗎?

謝謝。

誠然, 伊馬德

public static boolean currentTimeIsWithinStartAndEnd(String startTime, 
     String endTime) { 

    String pattern = "HH:mm"; 
    SimpleDateFormat sdf = new SimpleDateFormat(pattern); 
    boolean booleanValueToReturn = false; 

    try { 
     Date startTimeToCompare = sdf.parse(startTime); 
     Date endTimeToCompare = sdf.parse(endTime); 

     /* 
     * These are for the current time in date format. 
     */ 
     Date currentTime = new Date(System.currentTimeMillis()); 


     Log.w("Emad", "Current Time: " + currentTime + " Start Time is: " 
       + startTimeToCompare + " End Time is : " 
       + endTimeToCompare); 



     /* 
     * Check if current time is equal or greater than the start time. 
     */ 
     if (currentTime.compareTo(startTimeToCompare) == 0 
       || currentTime.compareTo(startTimeToCompare) == 1) { 

      booleanValueToReturn = true; 

      /* 
      * Now check if the current time is equal or less than the end 
      * time. 
      */ 
      if (currentTime.compareTo(endTimeToCompare) == 0 
        || currentTime.compareTo(endTimeToCompare) == -1) { 

       booleanValueToReturn = true; 
      } else { 
       booleanValueToReturn = false; 
      } 
     } else { 
      booleanValueToReturn = false; 
     } 

    } catch (java.text.ParseException e) { 
    } 

    return booleanValueToReturn; 

回答

1

您正在使用不正確SimpleDateFormat的。

String pattern =「HH:mm」應該是輸入日期字符串的格式。否則SimpleDateFormat如何知道哪個部分代表什麼。

創建兩個SimpleDateFormat,f1(具有輸入字符串格式)和f2(具有輸出字符串格式);

使用f1.parse()獲取輸入字符串的Date對象。

然後在此Date對象上使用f2.format()以獲取輸出字符串表示形式。

有關如何指定日期格式的詳細信息,請參閱SimpleDateFormat

public static boolean currentTimeIsWithinStartAndEnd(String startTime, 
     String endTime) { 

      // assuming input date string is of format MM/dd/yyyy. Change it according to your needs. 

      String inputPattern = "MM/dd/yyyy"; 
      String outputPattern = "HH:mm"; 
      SimpleDateFormat inputFormatter = new SimpleDateFormat(inputPattern); 
      SimpleDateFormat outputFormatter = new SimpleDateFormat(outputPattern); 

      Date startTimeToCompare = inputFormatter.parse(startTime); 
      String dateInRequiredFormat = outputFormat.format(startTimeToCompare); 
+0

Hi ManojGumber,我很困惑,因爲我對Android編程還很陌生。你能否顯示我們需要使用SimpleDateFormat的正確格式的編碼?謝謝。 –

+0

添加代碼示例 – ManojGumber

+0

嗨ManojGumber,非常感謝代碼示例。真的,Emad –

相關問題