0

Calendar オブジェクトを SQLite データベースに格納するには、Calendar オブジェクトを文字列に変換し、データベースにテキストとして格納するのが最も簡単な方法であることがわかりました。

さて、問題は文字列から格納された日付を抽出することにあります。

Calendar オブジェクトを含む文字列を解析して Calendar 値に設定するにはどうすればよいですか?

私のコードは次のとおりです。

    String CREATE_DOCTORS_TABLE = "CREATE TABLE " + TABLE_DOCTORS + "("
            + KEY_ID_DOC + " INTEGER PRIMARY KEY," + KEY_DOCTOR_NAME + " TEXT,"             
            + KEY_CLINIC_ADDRESS + " TEXT," + KEY_LAST_CHECKUP + " TEXT" + ");";
    db.execSQL(CREATE_DOCTORS_TABLE);       

KEY_LAST_CHECKUP には次のような値が含まれます。

java.util.GregorianCalendar[time=?,areFieldsSet=false,lenient=true,zone=Asia/Calcutta,firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2013,MONTH=4,WEEK_OF_YEAR=29,WEEK_OF_MONTH=3,DAY_OF_MONTH=16,DAY_OF_YEAR=198,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=19,SECOND=47,MILLISECOND=823,ZONE_OFFSET=19800000,DST_OFFSET=0]

そして、私はそれをこの方法でデータベースに保存しました:

values.put(KEY_LAST_CHECKUP, (doctor.getLastCheckUpDate().toString())); // last check up date

さて、格納された文字列から DAY、MONTH、YEAR を取得するにはどうすればよいでしょうか。

ここで、日付文字列をカレンダー オブジェクトに変換する方法について読みました: 日付文字列を日付またはカレンダー オブジェクトに変換する方法は?

しかし、私の文字列は単なる日付文字列ではありません。他の多くの詳細も含まれています。

最善の方法は何ですか?

4

2 に答える 2

5

を使用するようにデータ モデルを変更しますDate。これは、データベースに格納される通常のタイプです。

を使用しDateて を aに設定できますCalendar

Calendar c = Calendar.getInstance();
c.setTime(date);

Dateからを取得するには、Calendar使用できます

date = c.getTime();

a を使用して aをデータベースStringに格納するDateには、s の書式設定と解析が必要であり、データベース内でString比較を行うこともできません。

于 2013-07-17T11:08:43.613 に答える
3

文字列値を列に保持したい場合KEY_LAST_CHECKUP。使ってみてくださいSimpleDateFormat

long 値を保持する場合は、 を使用する必要はありませんSimpleDateFormat

インサートの場合:

SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String strDate = simpleFormat.format(doctor.getLastCheckUpDate());
values.put(KEY_LAST_CHECKUP, strDate);

取得の場合:

try {
    String strDate = --> from DB
    Date parsedDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(strDate);
    Calendar c = Calendar.getInstance();
    c.setTime(parsedDate);
} catch (ParseException e) {
    return "Unknown";
}
于 2013-07-17T11:28:16.307 に答える