2

我有这个代码。我需要将string “horaTarefa 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();    
4

3 回答 3

7

最好使用 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 文档

如果你真的想让你的应用程序国际化,你还应该考虑使用日历而不是像我在示例中所做的那样只使用日期。

于 2013-01-16T13:33:24.063 回答
4

如果你知道小时/分钟/等的位置并且它总是相同的,你可以用 得到它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));
于 2013-01-16T13:09:04.347 回答
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));
    }
}
于 2017-09-01T12:02:21.190 回答