将 SQLite 数据库中的字符串转换为 Android 中的日期/时间或双精度值,用于图表引擎图



我的问题是将两个字符串:KEY_DATE和KEY_TIME转换为图表的日期/时间格式。我不知道将它们转换为双打是否是一种解决方案。

我有一个SQLite数据库,它有一个包含四个类型字符串列的表。

public static final String KEY_ROWID = "_id";
public static final String KEY_WORKOUT = "workout_type";
public static final String KEY_DATE = "date";
public static final String KEY_TIME = "workout_time";

此数据已使用以下 SQL 存储到数据库中。

db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID
                + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_WORKOUT
                + " TEXT NOT NULL, " + KEY_DATE + " TEXT NOT NULL, "
                + KEY_TIME + " TEXT NOT NULL);"

我的锻炼应用程序中有一个秒表。当用户提交时:

  • 当前系统日期将转换为字符串,并以 KEY_DATE 的形式存储在 dB 中(格式为 dd-mmm-yy)
  • 秒表的小时、分钟和秒的 LONG 值将转换为字符串并连接为KEY_TIME并以 dB 存储(格式:hh:mm:ss)

我想使用 achartengine 在图表中显示这些数据,该引擎已在 Eclipse 中启动并运行。

KEY_DATE 将在 x 轴上,KEY_TIME将在 y 轴上。

以下方法从数据库中检索KEY_DATE和KEY_TIME。

public String getWorkoutDate(){
    String[] columns = new String[] { KEY_ROWID, KEY_WORKOUT, KEY_DATE,
            KEY_TIME };
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
            null, null);
    String result = "";
    int iDate = c.getColumnIndex(KEY_DATE);
    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        result = result + c.getString(iDate);
    }
    return result;
}

public String getWorkoutTime(){
    String[] columns = new String[] { KEY_ROWID, KEY_WORKOUT, KEY_DATE,
            KEY_TIME };
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
            null, null);
    String result = "";
    int iTime = c.getColumnIndex(KEY_TIME);

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        result = result + c.getString(iTime);
    }
    return result;
}

我创建了以下方法来将字符串转换回日期和时间格式。我不确定如何使用它们或它们是否合适。

public Date stringToDate(String stringDate) throws java.text.ParseException {
    SimpleDateFormat formatter;
    Date date;
    formatter = new SimpleDateFormat("dd-MMM-yy");
    date = (Date) formatter.parse(stringDate);
    System.out.println("stringToDate: Today is " + date);
    return date;
}
public Date stringToTime(String stringTime) throws ParseException{
    SimpleDateFormat formatter;
    Date time;
    formatter = new SimpleDateFormat("hh:mm:ss");
    time =  (Date) formatter.parse(stringTime);
    System.out.println("Time: " + formatter.format(time));
    return time;
}

我需要帮助将这些字符串转换为日期时间。我不知道将它们存储在哪种集合类型中。

在图表引擎示例中,x 和 y 值存储在 ArrayList 中

KEY_TIME值在 y 轴上永远不会超过 60 分钟。所以它可以转换为双倍,例如。35 分 30 秒将是 35.3。

KEY_DATE将在 x 轴上显示为 dd-mmm 或 dd-mmm-yy。我不知道我需要使用哪种类型的 ArrayList 来存储这些数据。

一旦我将数据存储为正确的类型,我想我知道如何使用 DBHelper 在图表引擎中对数据进行编码。

我是一个新手程序员,需要一些代码方面的帮助。这是我的第一个应用程序准备好进入Google Play市场之前代码中的最后一个问题!任何帮助将不胜感激。

你应该看看提供的javadoc,也许在他们的官方页面上的讨论组和论坛的支持部分:http://www.achartengine.org。

javadoc 应为您提供有关可用对象和方法的信息,例如您需要在 TimeChart 的数组中提供的数据类型或您选择的图表。

讨论组可能会帮助您更快地获得答案,因为该库的使用受到限制,并且这里可能对此了解不多。

还有一个很好的时间/日期相关计算库是 http://joda-time.sourceforge.net/

最新更新