Преобразование строк в базе данных SQLite в дату/время или двойные числа в Android для графа achartengine

Моя проблема заключается в преобразовании двух строк: KEY_DATE и KEY_TIME в форматы даты/времени для диаграммы. Я не знаю, может ли преобразование их в двойников быть решением.

У меня есть база данных SQLite, в которой есть таблица с четырьмя столбцами типа STRING.

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 (формат дд-ммм-гг).
  • ДЛИННЫЕ значения часов, минут и секунд секундомера преобразуются в строку, объединяются как KEY_TIME и сохраняются в дБ (формат: чч:мм:сс).

Я хочу отобразить эти данные на диаграмме с помощью 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;

}

Мне нужна помощь в кодировании преобразования этих строк в дату. Я не знаю, в каком типе коллекции их хранить.

В примерах achartengine значения x и y хранятся в ArrayList.

Значение KEY_TIME никогда не будет превышать 60 минут по оси Y. Таким образом, он может быть преобразован в Double, например. 35 минут 30 секунд будет 35,3.

KEY_DATE будет располагаться по оси X как дд-ммм или дд-ммм-гг. Я не знаю, какой тип ArrayList мне нужно использовать для хранения этих данных.

После того, как у меня есть данные, сохраненные в правильном типе, я думаю, что знаю, как кодировать данные в achartengine с помощью DBHelper.

Я начинающий программист и мне нужна помощь с кодом. Это последняя проблема в моем коде перед тем, как мое первое приложение будет готово для Google Play Market! Любая помощь будет принята с благодарностью.


person tiptopjat    schedule 18.06.2012    source источник
comment
35 минут 30 секунд будет 35,3. - На самом деле это будет 35,5 минут, а не 35,3. Если вы собираетесь хранить время как двойное число, помните о том, что в часах нет 100 минут, и, следовательно, это не прямое преобразование минут в десятичную часть часа. Каков результат методов, которые вы опубликовали? Они вызывают ошибку или просто неожиданный результат?   -  person FoamyGuy    schedule 19.06.2012
comment
@Tim Методы get правильно возвращают строки. Я не знаю, как передать эти данные в диаграмму. Могу ли я использовать команду преобразования SQL для преобразования текста в дату/время. Хорошая мысль о двойной проблеме.   -  person tiptopjat    schedule 19.06.2012


Ответы (1)


Вам следует взглянуть на предоставленный javadoc и, возможно, на раздел поддержки дискуссионных групп и форумов на их официальной странице: http://www.achartengine.org.

Документация Javadoc должна предоставить вам информацию о доступных объектах и ​​методах, например о типах данных, которые необходимо предоставить в массивах для TimeChart, или выбранной вами диаграмме.

Группы обсуждения могут помочь вам быстрее получить ответы, так как библиотека имеет ограниченное использование, и здесь может быть мало информации о ней.

Также хорошей библиотекой для расчета времени/даты является http://joda-time.sourceforge.net/

person Morfic    schedule 18.06.2012