2011-06-21 23 views

Respuesta

73

Prueba esto:

DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1); 
int day = datePicker.getDayOfMonth(); 
int month = datePicker.getMonth() + 1; 
int year = datePicker.getYear(); 
+1

Esto no parece funcionar para mí al actualizar los valores de selector de fecha en la interfaz de usuario. Me da el valor que comenzó con – gnB

+2

Derecha. Intente establecer OnDateSetListener para datePicker. –

+0

Esto funcionó para mí. Establecí estos valores como este String day = String.valueof (datePicker.getDayOfMonth(); Hasta ahora funciona perfectamente porque convierte los ints en cadenas en mi caso para inserciones en una base de datos sql. – natur3

3

Quiere decir que desea agregar widget de DatePicker en sus aplicaciones.

declaración de variable global en su clase de actividad:

private Button mPickDate; 
private int mYear; 
private int mMonth; 
private int mDay; 
static final int DATE_DIALOG_ID = 0; 

anote este código en onCreate (función):

//date picker presentation 
    mPickDate = (Button) findViewById(R.id.pickDate);//button for showing date picker dialog 
    mPickDate.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { showDialog(DATE_DIALOG_ID); } 
    }); 

    // get the current date 
    final Calendar c = Calendar.getInstance(); 
    mYear = c.get(Calendar.YEAR); 
    mMonth = c.get(Calendar.MONTH); 
    mDay = c.get(Calendar.DAY_OF_MONTH); 


    // display the current date 
    updateDisplay(); 

anote aquellos función fuera de onCreate() Función:

//return date picker dialog 
@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case DATE_DIALOG_ID: 
     return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); 
    } 
    return null; 
} 

//update month day year 
private void updateDisplay() { 
    mBodyText.setText(//this is the edit text where you want to show the selected date 
     new StringBuilder() 
      // Month is 0 based so add 1 
     .append(mYear).append("-") 
     .append(mMonth + 1).append("-") 
     .append(mDay).append("")); 


      //.append(mMonth + 1).append("-") 
      //.append(mDay).append("-") 
      //.append(mYear).append(" ")); 
} 

// the call back received when the user "sets" the date in the dialog 
private DatePickerDialog.OnDateSetListener mDateSetListener = 
    new DatePickerDialog.OnDateSetListener() { 
     public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
      mYear = year; 
      mMonth = monthOfYear; 
      mDay = dayOfMonth; 
      updateDisplay(); 
     } 
}; 
+0

Debe marcarse como la mejor respuesta – Amir

22

Me las arreglé para configurar el MinDate & el MaxDate programación de esta manera:

final Calendar c = Calendar.getInstance(); 

    int maxYear = c.get(Calendar.YEAR) - 20; // this year (2011) - 20 = 1991 
    int maxMonth = c.get(Calendar.MONTH); 
    int maxDay = c.get(Calendar.DAY_OF_MONTH); 

    int minYear = 1960; 
    int minMonth = 0; // january 
    int minDay = 25; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.create_account); 
     BirthDateDP = (DatePicker) findViewById(R.id.create_account_BirthDate_DatePicker); 
     BirthDateDP.init(maxYear - 10, maxMonth, maxDay, new OnDateChangedListener() 
     { 

     @Override 
     public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) 
     { 
      if (year < minYear) 
       view.updateDate(minYear, minMonth, minDay); 

       if (monthOfYear < minMonth && year == minYear) 
       view.updateDate(minYear, minMonth, minDay); 

       if (dayOfMonth < minDay && year == minYear && monthOfYear == minMonth) 
       view.updateDate(minYear, minMonth, minDay); 


       if (year > maxYear) 
       view.updateDate(maxYear, maxMonth, maxDay); 

       if (monthOfYear > maxMonth && year == maxYear) 
       view.updateDate(maxYear, maxMonth, maxDay); 

       if (dayOfMonth > maxDay && year == maxYear && monthOfYear == maxMonth) 
       view.updateDate(maxYear, maxMonth, maxDay); 
     }}); // BirthDateDP.init() 
    } // activity 

funciona bien para mí, disfrutar :)

+0

Quiero hacer lo contrario, significa que la fecha mínima será la fecha actual y la fecha máxima será cualquier fecha mayor que la actual. Cómo hacerlo. Cualquier ayuda será muy apreciada. Lo intenté pero tuve algún problema. Eche un vistazo a este http://stackoverflow.com/questions/8675984/date-picker-with-max-and-minimum-date-in-ondatechanged-in-android-1-5 – mH16

1

U también se puede usar te clase java Calendar.GregorianCalendar

GregorianCalendar calendarBeg=new GregorianCalendar(datePicker.getYear(), 
     datePicker.getMonth(),datePicker.getDayOfMonth()); 
    Date begin=calendarBeg.getTime(); 
3

también puede utilizar este código ...

datePicker = (DatePicker) findViewById(R.id.schedule_datePicker); 
int day = datePicker.getDayOfMonth(); 
int month = datePicker.getMonth() + 1; 
int year = datePicker.getYear(); 


SimpleDateFormat dateFormatter = new SimpleDateFormat("MM-dd-yyyy"); 
Date d = new Date(year, month, day); 
String strDate = dateFormatter.format(d); 
Cuestiones relacionadas