2014-03-30 20 views
0

我正在使用SimpleDateFormat以格式獲取時間。當我這樣做時,我得到了一個字符串變量的格式。我想知道是否有一個內置的方法從字符串變量分開獲取小時和分鐘?來自字符串變量的時間格式

SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a"); 
String time = sdf.format(calendar.getTime()); 

比方說我的字符串得到這個格式:上午12時34分

我想要的小時和分鐘分開。我想要一個新的變量12和34。

我不想用這個:

int hour = calendar.get(Calendar.HOUR_OF_DAY); 

因爲我只能訪問字符串變量,當我將它保存在SharedPreferences。

回答

1

我會將其轉換回日期,其格式與您用來獲取此字符串的格式相同。任何字符串操作都會很脆弱。你應該在一個地方保存你的格式字符串,所以無論你什麼時候改變它,你的代碼仍然可以正常工作。

//Get this one provided by dependency injection for example 
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a"); 
    String dateString = sdf.format(new Date()); 
    Date date = sdf.parse(dateString); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTime(date); 

    int hour = calendar.get(Calendar.HOUR_OF_DAY); 
    int minute = calendar.get(Calendar.MINUTE); 
1

您可以從calendar對象

int hour = calendar.get(Calendar.HOUR_OF_DAY); 
int minute = calendar.get(Calendar.MINUTE); 
+0

因爲我在程序中的其他地方使用了字符串變量,我無法使用日曆對象。 – EM10

+1

@ EM10,然後將其轉換回日期時間。把它作爲一個字符串不會幫助你,你必須知道格式才能將部分內容從其中刪除,這會使代碼非常脆弱。提示處理日期,是從字符串轉換是你做的第一件事,轉換爲字符串最後。其他任何東西都是bug狂歡節。 –

1

你可以寫我們什麼是「時間」,你回去怎麼做呢?我認爲,通過字符串處理你可以解決這個問題。

1

你可以從你的字符串一個java.util.Date對象,在這裏解釋:Java string to date conversion

public static final String YOUR_FORMAT = "hh:mm a"; 

Date yourDateTime = new SimpleDateFormat(YOUR_FORMAT).parse(time); 

Calendar cal = Calendar.getInstance(); 
cal.setTime(yourDateTime); 
int hour = cal.get(Calendar.HOUR_OF_DAY); 

另一種方式是分割字符串:

int hour = Integer.parseInt(time.split("\\:")[0]);