2011-06-21 17 views

cevap

73

bu deneyin:

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

Bu, UI'deki tarih seçici değerlerini güncellerken benim için çalışmıyor gibi görünüyor. Bana – gnB

+2

Right ile başlayan değeri veriyor. Lütfen OnDateSetListener öğesini datePicker öğesine ayarlamaya çalışın. –

+0

Bu benim için çalıştı. Bu değerleri şu şekilde ayarladım: String = string.valueof (datePicker.getDayOfMonth(); Şimdiye kadar mükemmel çalışıyor, çünkü bir sql veri tabanına eklemek için benim durumumdaki dizeleri dizelere çevirir. – natur3

3

size uygulamalar içine DatePicker widget'ı eklemek istediğiniz anlamına gelir. etkinlik sınıfa

Küresel değişken ifadesi: onCreate içine bu kodu aşağı

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

yazma() işlevi:

//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(); 

onCreate dışında olanlar fonksiyonunu not() fonksiyonu:

//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

En iyi yanıt olarak işaretlenmelidir – Amir

22

MinDate & MaxDate'i ayarlamayı başardım programlı böyle:

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 

benim için gayet iyi çalışıyor, :)

+0

Bunun tersini yapmak istiyorum, minimum tarih güncel tarih ve maksimum tarih geçerli tarihden daha büyük bir tarih olacak demektir.Bunu nasıl yaparım.Bir yardım çok takdir edilecektir.Ama denemek ama biraz sorun.Ayrıca bu http://stackoverflow.com/questions/8675984/date-picker-with-max-and-minimum-date-in-ondatechanged-in-android-1-5 – mH16

1

U da

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

ayrıca bu kodu kullanabilirsiniz te Calendar.GregorianCalendar java sınıfını kullanabilirsiniz zevk ...

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); 
İlgili konular