Android date picker example

In Android, you can use “android.widget.DatePicker” class to render a date picker component to select day, month and year in a pre-defined user interface.

In this tutorial, we show you how to render date picker component in current page via android.widget.DatePicker, and also in dialog box via android.app.DatePickerDialog. In addition, we also show you how to set a date in date picker component.

P.S This project is developed in Eclipse 3.7, and tested with Android 2.3.3.

1. DatePicker

Open “res/layout/main.xml” file, add date picker, label and button for demonstration.

File : res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
 
    <Button
        android:id="@+id/btnChangeDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Change Date" />
 
    <TextView
        android:id="@+id/lblDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Current Date (M-D-YYYY): "
        android:textAppearance="?android:attr/textAppearanceLarge" />
 
    <TextView
        android:id="@+id/tvDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceLarge" />
 
    <DatePicker
        android:id="@+id/dpResult"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
 
</LinearLayout>

P.S The “DatePickerDialog” is declare in code, not XML.

2. Code Code

Read the code’s comment, it should be self-explanatory.

File : MyAndroidAppActivity.java

package com.mkyong.android;
 
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
 
public class MyAndroidAppActivity extends Activity {
 
	private TextView tvDisplayDate;
	private DatePicker dpResult;
	private Button btnChangeDate;
 
	private int year;
	private int month;
	private int day;
 
	static final int DATE_DIALOG_ID = 999;
 
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
 
		setCurrentDateOnView();
		addListenerOnButton();
 
	}
 
	// display current date
	public void setCurrentDateOnView() {
 
		tvDisplayDate = (TextView) findViewById(R.id.tvDate);
		dpResult = (DatePicker) findViewById(R.id.dpResult);
 
		final Calendar c = Calendar.getInstance();
		year = c.get(Calendar.YEAR);
		month = c.get(Calendar.MONTH);
		day = c.get(Calendar.DAY_OF_MONTH);
 
		// set current date into textview
		tvDisplayDate.setText(new StringBuilder()
			// Month is 0 based, just add 1
			.append(month + 1).append("-").append(day).append("-")
			.append(year).append(" "));
 
		// set current date into datepicker
		dpResult.init(year, month, day, null);
 
	}
 
	public void addListenerOnButton() {
 
		btnChangeDate = (Button) findViewById(R.id.btnChangeDate);
 
		btnChangeDate.setOnClickListener(new OnClickListener() {
 
			@Override
			public void onClick(View v) {
 
				showDialog(DATE_DIALOG_ID);
 
			}
 
		});
 
	}
 
	@Override
	protected Dialog onCreateDialog(int id) {
		switch (id) {
		case DATE_DIALOG_ID:
		   // set date picker as current date
		   return new DatePickerDialog(this, datePickerListener, 
                         year, month,day);
		}
		return null;
	}
 
	private DatePickerDialog.OnDateSetListener datePickerListener 
                = new DatePickerDialog.OnDateSetListener() {
 
		// when dialog box is closed, below method will be called.
		public void onDateSet(DatePicker view, int selectedYear,
				int selectedMonth, int selectedDay) {
			year = selectedYear;
			month = selectedMonth;
			day = selectedDay;
 
			// set selected date into textview
			tvDisplayDate.setText(new StringBuilder().append(month + 1)
			   .append("-").append(day).append("-").append(year)
			   .append(" "));
 
			// set selected date into datepicker also
			dpResult.init(year, month, day, null);
 
		}
	};
 
}

P.S The “DatePickerDialog” example above, is referenced from Google Android date picker example, with some minor change.

3. Demo

Run the application.

1. Result, “date picker” and “textview” are set to current date.

android datepicker demo1

2. Click on the “Change Date” button, it will prompt a date picker component in a dialog box via DatePickerDialog.

android datepicker demo2

3. Both “date picker” and “textview” are updated with selected date.

android datepicker demo3

Download Source Code

Download it – Android-DatePicker-Example.zip (16 KB)

References

  1. Android DatePicker Example
  2. Android DatePicker JavaDoc
  3. Android DatePickerDialog JavaDoc
Tags :

About the Author

mkyong
Founder of Mkyong.com and HostingCompass.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

  • Itachi Uchia

    Mkyong you sucks man

  • simmant

    Thank you so much for such a nice example sir mm

  • Bala

    Very useful, t5hx for the code

  • Meghna

    Perfect thanks… This http://www.compiletimeerror.com/2013/07/android-date-picker-example-android.html looks a bit different, may help.. Have a look…

  • Navz gustav

    how do i get the full month name from the datepicker …

    • Bala

      its not possible directly..you need to use nested if or switch and assign a string based on the choice of month returned by DatePicker

  • http://WWW.MKYONG.COM DINESH

    static final int DATE_DIALOG_ID = 999;

    WHAT IS MEAN BY 999…..

    • http://www.pavanh.com pavan

      Hi Arun ,

      DATE_DIALOG_ID = 999 is just an unique identification number which is passed to
      onCreateDialog(int id) method to identify which dialog should be popped up

      you can also refer this tutorial at Date Picker

  • learner

    please convert this code for fragment beause im not able run this in fragment………

  • http://pavanhd.blogspot.in pavan
  • http://pavanhd.blogspot.in/ Pavan Kumar

    very explainatory

  • Pingback: DatePicker in Android : Android Community - For Application Development()

  • a

    Hi

    I am getting the below errors.

    Can any 1 will help me?

    Errors are “DatePickerDialog.OnDateSetListener cannot be resolved to a type” and
    “DatePickerDialog.OnDateSetListener cannot be resolved to a type”

    Thanks

    • sandeep

      CTRL+SHIFT+O

      this should work………:-)

  • ishan1211

    good example Thanks

  • Debby

    Why would you want the (nonworking) datepicker to appear in your main window… *AND* then again (working model) in the alert dialog?

  • Pingback: TimePickerListener calling two methods for same time | Code and Programming()

  • Pingback: TimePickerListener calling two methods for same time : Android Community - For Application Development()

  • Pingback: Looking for the android DatePicker with the “Set” and “Cancel” buttons : Android Community - For Application Development()

  • lywhlao

    hi freind,I download your app then import it to my eclipse.I find a problem(it come up in other apps when I use DatePicker).The description is
    “The following classes could not be found:
    – CalendarView (Change to android.widget.CalendarView, Fix Build Path, Edit XML)
    – DatePicker (Change to android.widget.DatePicker, Fix Build Path, Edit XML)

    Can you help me? I google it but find nothing.

  • Raghu

    I can’t use datepicker in system.
    It shows an erroe message, what will be reason.
    The following classes could not be found:
    – CalendarView (Change to android.widget.CalendarView, Fix Build Path, Edit XML)
    – DatePicker (Change to android.widget.DatePicker, Fix Build Path, Edit XML)

    • lywhlao

      ok.I find the solution.the error occurs,beacuse the API doesn’t match.When I use the api lv17,The DatePicker Doesn’t work.So,I use the lower level API ,like level 10.the error is not exist.

  • varsha

    hie..i like your appss..but i also tried to do the start date n end date n set the text in the text box with the same datepicker.please help me to do this..i am waiting for your reply…thank you..u send me on my emailid..again thanks a lot

  • Manoj

    Its a Nice one….

  • Rick

    Nice tutorial, thanks

    • Akshay rangnekar

      really nice example ,thanx!!!!!!!

  • suresh

    Great Post.
    +1 from my side.

  • Udayakumar

    Thank you very much for this excellent tutorial.

  • Aagam Shah

    If i want to make an app in which like date picker i want to have slider in which instead of months i wanted to display a group of items eg. list of fruits..

    For that what should i do…
    Thanks in advance..

  • nagarjuna reddy

    hello this is good in place of month value i want month name like “jan”,”feb”,”mar”…..any idea

  • Archie

    But the datepick view takes a lot of space is there a way to open only dialog box without the datepick. so that when i click on some editText view, just the dialog box pops up and when i set the date in the dialog box it must show me the date in the editText view.

    • Aniket

      Really a nice post. Yes there is a way, in the main.xml file keep the Datepicker’s visibility as “invisible”. Rest all will work the same.

    • http://www.pavanh.com pavan

      Hi Archie
      your correct datepick view takes a lot of space , but the dialog will disable the background activity until the user select the date and about getting date in edittext it’s simple you just need to grab the selected date and set that in edittext view thats it

      you can also refer this tutorial at Date Picker

  • Pingback: Android Tutorial()

  • Anudeep

    nice one ……
    can we use different gadgets instead of this?
    where we can get?

  • Android Newbie

    Thank you very much for this excellent tutorial. This clear and the screenshots helped a lot.

  • http://reescribiendo.wordpress.com Fabián García

    Thanks a lot! :D