Android SwitchDateTime Picker

SwitchDateTime Picker is a library for select a Date object in dialog with a DatePicker (Calendar) and a TimePicker (Clock) in the same UI.


You can contribute in different ways to help us on our work.

  • Add features by a pull request.
  • Help to translate into your language
  • Donate 人◕ ‿‿ ◕人Y for a better service and a quick development of your features.


Add the JitPack repository in your build.gradle at the end of repositories:

	allprojects {
		repositories {
			maven { url "" }

And add the dependency

replacing ${version} with the version number in jitpack

	dependencies {
	        compile 'com.github.Kunzisoft:Android-SwitchDateTimePicker:${version}'


SimpleDateFormat for Day and Month

You can specify a particular SimpleDateFormat for value of Day and Month with setSimpleDateMonthAndDayFormat(SimpleDateFormat format)
Warning, the format must satisfy the regular expression : (M|w|W|D|d|F|E|u|\s)*
, for example dd MMMM

24 Hours mode

By default, time is in 12 hours mode, If you want a 24-hour display, use:
before the "show"

Hightligh selected AM / PM

In 24 hours mode, If you want to highlight the selected AM or PM, use :

Start with a specific view

For launch Dialog with a specific view, call :
dateTimeFragment.startAtTimeView();, dateTimeFragment.startAtCalendarView(); or dateTimeFragment.startAtYearView();
before the "show"

Define minimum and maximum

For just allow selection after or/and before dates, use :
dateTimeFragment.setMinimumDateTime(Date minimum);
dateTimeFragment.setMaximumDateTime(Date maximum);


Optionally define a timezone :


You can customize the style to change color, bold, etc... of each element.
You need to use a Theme.AppCompat theme (or descendant) with SwitchDateTime's activity. (compile '' in gradle)

In your styles.xml, you can redefine each style separately, but you must keep each item, for example : change size of "year label"

    <!-- Base application theme. -->
    <style name="MyAppCustomTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

    <!-- SwitchDateTime style is independent, each element is optional-->
    <!-- Year Precise -->
    <style name="Theme.SwitchDateTime.DateLabelYear">
        <item name="android:textSize">58sp</item>
        <item name="android:textColor">#fff</item>
        <item name="android:textStyle">bold</item>

Styles elements :


To customize the AlertDialog that is shown, use :
void setAlertStyle(@StyleRes int styleId)


You can see
for complete sample.

// Initialize
SwitchDateTimeDialogFragment dateTimeDialogFragment = SwitchDateTimeDialogFragment.newInstance(
        "Title example",

// Assign values
dateTimeDialogFragment.setMinimumDateTime(new GregorianCalendar(2015, Calendar.JANUARY, 1).getTime());
dateTimeDialogFragment.setMaximumDateTime(new GregorianCalendar(2025, Calendar.DECEMBER, 31).getTime());
dateTimeDialogFragment.setDefaultDateTime(new GregorianCalendar(2017, Calendar.MARCH, 4, 15, 20).getTime());

// Define new day and month format
try {
    dateTimeDialogFragment.setSimpleDateMonthAndDayFormat(new SimpleDateFormat("dd MMMM", Locale.getDefault()));
} catch (SwitchDateTimeDialogFragment.SimpleDateMonthAndDayFormatException e) {
    Log.e(TAG, e.getMessage());

// Set listener
dateTimeDialogFragment.setOnButtonClickListener(new SwitchDateTimeDialogFragment.OnButtonClickListener() {
    public void onPositiveButtonClick(Date date) {
        // Date is get on positive button click
        // Do something

    public void onNegativeButtonClick(Date date) {
        // Date is get on negative button click

// Show, "dialog_time");

Neutral button

To use with a neutral button, initialize with another parameter and implement the OnButtonWithNeutralClickListener :

SwitchDateTimeDialogFragment dateTimeDialogFragment = SwitchDateTimeDialogFragment.newInstance(
        "Title example",

dateTimeFragment.setOnButtonClickListener(new SwitchDateTimeDialogFragment.OnButtonWithNeutralClickListener() {
    public void onPositiveButtonClick(Date date) {

    public void onNegativeButtonClick(Date date) {

    public void onNeutralButtonClick(Date date) {