我有这个代码。我需要将string
" horaTarefa HH:MM" 转换为int
"小时= HH" 和int
"分钟= 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 :(得分:6)
最好使用dateformatter而不是仅解析整数。通过这种方式,您可以更好地控制时间和日期的样子(一位数字写为 05 或 5 ?时间是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。
答案 1 :(得分: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));
答案 2 :(得分: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));
}
}