2013-01-16 71 views
2

我有這段代碼。我需要轉換string「horaTarefa HH:MM」int「小時= HH」int「分= MM」如何將「String HH:MM」轉換爲「int hour HH」和「int minute MM」

我想我可以做同樣的事情與「dateTarefa DD/MM/YYYY「

SQLiteDatabase db; 
db = openOrCreateDatabase("AgendadorTarefas.db",SQLiteDatabase.CREATE_IF_NECESSARY,null); { } 

Cursor c = db.query("Tarefa", new String[] { 
       "codTarefa", "dateTarefa", "horaTarefa", "textoTarefa"}, 
      null, null, null, null, null); 

c.moveToFirst(); 

final ArrayList<String> result = new ArrayList<String>(); 

while(c.moveToNext()) 
{ 
    String Date = c.getString(1); 
    String Hora = c.getString(2); 
    String Texto = c.getString(3); 
    result.add(Data + " às " + Hora + " \n" + Texto); 
} 

hour = Calendar.HOUR; 
minute = Calendar.MINUTE; 

c.close();  
+0

請考慮使用Java的專有名稱約定(如在本例中爲lowerCamelCase變量名稱)。這確實會提高代碼的可讀性,特別是在突出顯示的情況下。 – SapuSeven

回答

3

如果你知道時/分/等的位置,它始終是一樣的,你可以用substring得到它,然後將其與Integer.parseInt

String Hora = "12:34"; 
int hour = Integer.parseInt(Hora.substring(0, 2)); 
int minute = Integer.parseInt(Hora.substring(3)); 

String Date = "12/34/5678"; 
int day = Integer.parseInt(Date.substring(0, 2)); 
int month = Integer.parseInt(Date.substring(3, 5)); 
int year = Integer.parseInt(Date.substring(6)); 
6

這是更好轉換爲數字使用dateformatter而不是僅僅解析整數。通過這種方式,您可以更好地控制時間和日期的顯示方式(一位數字編號爲或?是時間12小時還是24小時格式?)

一個簡單的代碼來解析時間可能看起來像:

try 
{ 
    SimpleDateFormat format = new SimpleDateFormat("H:m"); 
    Date date = format.parse("15:34"); 
    int hours = date.getHours(); 
    int min = date.getMinutes(); 
} 
catch (ParseException e) 
{ 
    // parsing failed 
} 

對於什麼樣的格式參數可以像看一看的SimpleDateFormat Documentation

如果你真的想使您的應用程序的國際參考,你也應該考慮使用Calendar而不是像我在示例中那樣只是Date。

+0

date.getHours()已棄用。使用日曆實例。 –

+1

是的,這就是爲什麼我添加了最後一段。 – Thrakbad

+0

這是正確的方法 – SapuSeven

1

date.getHours()已棄用所以我選擇使用日曆和此問題的最佳答案更新此問題的答案。

public static int getHour(String hourString) { 
    SimpleDateFormat format = new SimpleDateFormat("HH:mm", Locale.US); 
    try { 
     Date date = format.parse(hourString); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTime(date); 
     return calendar.get(Calendar.HOUR_OF_DAY); 
    } catch (ParseException e) { 
     return Integer.parseInt(hourString.substring(0, 2)); 
    } 
}