首页 文章

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

提问于
浏览
9

在我的应用程序中,我有一个保存在远程数据库中的日期,我希望将日期选择器设置为 . 我已经研究过,只发现了通过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 回答

  • 8

    你可以使用 updateDate(year, month, day_of_month); 日期选择器返回日,月和年的整数值 . 所以参数必须是整数值 . 并且日期选择器中月份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));
    }
    
  • 4

    使用JodaTime

    以下是我如何从 DateTime 对象设置 DatePickerTimePicker 的简单示例,该对象可以是当前日期或过去或将来的任何日期(本例中的属性称为 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);
    

    希望有所帮助 .

    J.P

相关问题