2013-01-16 39 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)); 
    } 
}