2011-06-21 12 views
33

उपयोगकर्ता के लिए दिनांक निर्धारित करने के लिए एंड्रॉइड में DatePicker विजेट का उपयोग करें, और एक पुष्टिकरण बटन क्लिक होने पर दिनांक मान प्राप्त करना चाहते हैं, मैं यह कैसे कर सकता हूं?एंड्रॉइड में डेटपिकर विजेट से दिनांक कैसे प्राप्त करें?

उत्तर

73

इस प्रयास करें:

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

यूआई में दिनांक पिकर मान अपडेट करते समय यह मेरे लिए काम नहीं करता है। यह मुझे वह मूल्य देता है जो इसे – gnB

+2

के साथ शुरू किया गया है। कृपया OnDateSetListener को datePicker पर सेट करने का प्रयास करें। –

+0

यह मेरे लिए काम किया। मैंने इन मानों को इस स्ट्रिंग दिन = स्ट्रिंग.वल्यूफ (datePicker.getDayOfMonth() के रूप में सेट किया है; यह अब तक पूरी तरह से काम करता है क्योंकि यह एक एसक्यूएल डेटाबेस में आवेषण के लिए अपने मामले में तारों को तारों में परिवर्तित करता है। – natur3

1

DatePicker कक्षा में माह, वर्ष, महीने का दिन प्राप्त करने के तरीके हैं। या आप OnDateChangedListener का उपयोग कर सकते हैं।

3

आप मतलब है कि आप अपने ऐप्लिकेशन पर DatePicker विजेट जोड़ना चाहते हैं। अपनी गतिविधि वर्ग में

वैश्विक चर घोषणा:

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

onCreate इस कोड को लिख लें() फ़ंक्शन:

//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 के बाहर उन समारोह लिख() फ़ंक्शन:

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

इसे सर्वोत्तम उत्तर – Amir

22

मैनेडेटेड को न्यूनतम दिनांक & सेट करने के लिए मैंग किया प्रोग्राम के रूप में इस तरह:

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 

यह मेरे लिए ठीक काम करता है, का आनंद लें :)

+0

के रूप में चिह्नित किया जाना चाहिए मैं इसके विपरीत करना चाहता हूं, इसका मतलब है कि न्यूनतम तिथि वर्तमान तिथि होगी और अधिकतम तिथि वर्तमान तिथि से अधिक तारीख होगी। ऐसा कैसे करें। किसी भी मदद की अत्यधिक सराहना की जाएगी। मैंने कोशिश की लेकिन कुछ समस्या हो रही है। यह http://stackoverflow.com/questions/8675984/date-picker-with-max-and-minimum-date-in-ondatechanged-in-android-1-5 – mH16

1

यू भी ते Calendar.GregorianCalendar जावा वर्ग का उपयोग कर सकते

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

आप भी इस कोड का उपयोग कर सकते हैं ...

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); 
संबंधित मुद्दे