如何将String转换为Calendar对象?

Ran*_*ser 0 java android calendar android-date android-calendar

为了在SQLite数据库中存储Calendar对象,我发现最简单的方法是将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);       
Run Code Online (Sandbox Code Playgroud)

其中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]
Run Code Online (Sandbox Code Playgroud)

我用这种方式将它存储在数据库中:

values.put(KEY_LAST_CHECKUP, (doctor.getLastCheckUpDate().toString())); // last check up date
Run Code Online (Sandbox Code Playgroud)

现在,我如何从存储的字符串中检索DAY,MONTH和YEAR?

我在这里阅读有关如何将日期字符串转换为日历对象的方法: 如何将日期字符串转换为日期或日历对象?

但我的字符串不只是一个日期字符串.它还包含许多其他细节.

前进的最佳方式是什么?

Uwe*_*nus 5

更改您的数据模型以使用Date.这是存储在数据库中的常用类型.

您可以设置DateCalendar使用

Calendar c = Calendar.getInstance();
c.setTime(date);
Run Code Online (Sandbox Code Playgroud)

要检索DateCalendar您可以使用

date = c.getTime();
Run Code Online (Sandbox Code Playgroud)

使用a String来存储Date数据库需要对Strings进行格式化和解析,并且除了数据库之外也无需进行比较.