Using android Date Picker


This is a sample activity which shows how to use Date picker control.

Underlying Algorithm:

Basic description of algorithm in step by step form:
1.) Create a Project DatePickerExample.
2.) Create a date_picker.xml in res/layout.
3.) Put the following code in date_picker.xml :

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
 <TextView android:id="@+id/dateDisplay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="4dip"
            android:text="@string/hello"/>
        <Button android:id="@+id/pickDate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="4dip"
            android:text="@string/hello"/>     
</LinearLayout>

4.) To create a date picker control we need the following imports :

import java.util.Calendar;
import android.app.DatePickerDialog;
import android.widget.DatePicker; 

5.) Run the application.

Steps to Create:

1.) Open Eclipse. Use the New Project Wizard and select Android Project Give the respective project name i.e. DatePickerExample. Enter following information:
Project name: DatePickerExample
Build Target: Google APIs
Application name: DatePickerExample
Package name: com.sample.DatePickerExample
Create Activity: DatePickerExample

On Clicking Finish DatePickerExample code structure is generated with the necessary Android Packages being imported along with DatePickerExample.java. DatePickerExample class will look like following:

package com.sample.DatePickerExample;

import android.app.Activity;
import java.util.Calendar;
import android.app.DatePickerDialog;
import android.widget.DatePicker;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class DatePickerExample extends Activity {

	private TextView mDateDisplay;
	private int mYear;
	private int mMonth;
	private int mDay;
	static final int DATE_DIALOG_ID = 1;
	@Override

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.date_picker);
		mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
		Button pickDate = (Button) findViewById(R.id.pickDate);
		pickDate.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				showDialog(DATE_DIALOG_ID);
			}
		});
		final Calendar c = Calendar.getInstance();
		mYear = c.get(Calendar.YEAR);
		mMonth = c.get(Calendar.MONTH);
		mDay = c.get(Calendar.DAY_OF_MONTH);
		updateDisplay();
	}
	@Override
	protected Dialog onCreateDialog(int id) {
		switch (id) {

		case DATE_DIALOG_ID:
			return new DatePickerDialog(this,
				mDateSetListener,
				mYear, mMonth, mDay);
		}
		return null;
	}
	protected void onPrepareDialog(int id, Dialog dialog) {
		switch (id) {

		case DATE_DIALOG_ID:
			((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);
			break;
		}
	}    
	private void updateDisplay() {
		mDateDisplay.setText(
			new StringBuilder()
			// Month is 0 based so add 1
			.append(mMonth + 1).append("-")
			.append(mDay).append("-")
			.append(mYear).append(" "));
	}
	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();
		}
	};
}

Output –The final output:

About the Author

Leave a Reply 10 comments

Arif - June 10, 2011 Reply

Thanks dude,that worked well…….

just wanted to know the other thing how will i embed this date function with other application of android

    Sushant - June 10, 2011 Reply

    You can call below lines anywhere in other android application and use mYear/mMonth/mDay to play with date.

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

    I hope I am getting you correctly.

Tester - October 28, 2011 Reply

Is that any style has to be applied in order to get the above date picker rather than standard datepicker dialog?

Tester - October 28, 2011 Reply

Is that any style has to be applied in order to get the above date picker rather than standard date picker dialog?..

Derek Davidson - December 23, 2011 Reply

I get the same as you, but it is difficult to change the year. I have been searching how toget a ‘nicer’ dialog, and it may be to set the them parameter. But I am not sure what tis points to.. Is it an XML file that defines the dialog.

I know the problem with the dialog is that it is too big for the screen. Rotating sometimes shows a ‘scrollable’ year, or part of the text for the year. (a lot of 20 to gues which one is 2004).

Any clues on where to look for a them for a dateDialog?

Derek Davidson - December 23, 2011 Reply

I get the same as you, but it is difficult to change the year. I have been searching how toget a ‘nicer’ dialog, and it may be to set the them parameter. But I am not sure what tis points to.. Is it an XML file that defines the dialog.

I know the problem with the dialog is that it is too big for the screen. Rotating sometimes shows a ‘scrollable’ year, or part of the text for the year. (a lot of 20 to gues which one is 2004).

Any clues on where to look for a them for a dateDialog?

Pavan Kumar - April 8, 2013 Reply

very nicely explained thank you sir

Sebastian C - May 26, 2013 Reply

How to modify it to pick from array of colours instead of text?

Meghna - July 21, 2013 Reply

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

Ankur - July 30, 2013 Reply

Hi, How I Can add Two Button Simultaneously In Single Layout Activity.
And Both Calander Sholud Display Different Date in Both Text View.
Give Me Code If Requre Any New Plz.

Thanx In Advance.

Leave a Reply: