将android datepicker中的日期初始化为特定日期,即不是当前日期。

时间:2012-06-14 07:16:58

标签: android date calendar initialization android-datepicker

在我的应用程序中,我将日期保存在远程数据库中,我希望将日期选择器设置为。我已经研究过,只发现了通过Calender java util设置datepicker今天日期的例子。例如:

final Calendar c = Calendar.getInstance();
        year = c.get(Calendar.YEAR);
        month = c.get(Calendar.MONTH);
        day = c.get(Calendar.DAY_OF_MONTH);

如何使用日历从数据库显示我的日期而不是今天的日期?你有任何我可以遵循的建议或例子吗?

更新: 在尝试使用Calendar之后,我尝试使用

     // set Date
            String eventYear =date.substring(0,4);
            String eventDay =date.substring(5,7);
            String eventMonth =date.substring(8,10);
        //convert string to int for because calendar only takes int: set(int,int)
        int month = Integer.parseInt(eventMonth);
  final Calendar c = Calendar.getInstance();
     mMonth=c.get(c.set(Calendar.MONTH, Calendar.month));
// or   mMonth=c.get(Calendar.MONTH, Calendar.month);

生成错误,表示无法将int转换为void。

如何使用日历将其设置为特定日期?根据谷歌的开发者网站,我应该能够做到这一点。 http://developer.android.com/reference/java/util/Calendar.html

示例:

set(Calendar.MONTH, Calendar.SEPTEMBER)

我希望将来自服务器的datepicker中显示的日期作为默认值。

2 个答案:

答案 0 :(得分:8)

你可以使用 updateDate(年,月,日__月); 日期选择器返回日,月和年的整数值。所以参数必须是整数值。并且日期选择器中月份jan的整数值为0.

我需要将从数据库中提取的日期放入日期选择器中。我编写了以下代码,但它确实有用。

DatePicker DOB;
SQLiteDatabase db;

DOB=(DatePicker)findViewById(R.id.datePicker1);

db = openOrCreateDatabase("BdaySMS", SQLiteDatabase.CREATE_IF_NECESSARY, null);
Cursor cur = db.rawQuery("select * from BdaySMS where ph='"+pn+"';", null);//pn is the phone no.

if(cur.moveToFirst())
{
    name.setText(cur.getString(0));
    phone.setText(cur.getString(1));
    DOB.updateDate(Integer.parseInt(cur.getString(4)),Integer.parseInt(cur.getString(3)),Integer.parseInt(cur.getString(2)));
    message.setText(cur.getString(5));
}

答案 1 :(得分:4)

使用JodaTime

以下是我如何从DatePicker对象设置TimePickerDateTime的简单示例,该对象可以是当前日期或过去或将来的任何日期(属性在这种情况称为inspected_at):

DatePicker dp = (DatePicker) findViewById(R.id.inspected_at_date);
TimePicker tp = (TimePicker) findViewById(R.id.inspected_at_time);

DateTime inspected_at = DateTime.now().minusYears(1); // Typically pulled from DB.

int year    = inspected_at.getYear() ;
int month   = inspected_at.getMonthOfYear() - 1;      // Need to subtract 1 here.
int day     = inspected_at.getDayOfMonth();  
int hour    = inspected_at.getHourOfDay();
int minutes = inspected_at.getMinuteOfHour();

dp.updateDate(year, month, day);
tp.setCurrentHour(hour);
tp.setCurrentMinute(minutes);

希望有所帮助。

JP