android自定義時間控件NumberPicker

android自定義時間控件NumberPicker
佈局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_gravity="center_horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <NumberPicker
        android:id="@+id/date"
        android:layout_width="120dip"
        android:layout_height="wrap_content"
        android:focusable="true"
        android:focusableInTouchMode="true"
        />

    <NumberPicker
        android:id="@+id/hour2"
        android:layout_width="50dip"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dip"
        android:focusable="true"
        android:focusableInTouchMode="true"
        />

    <NumberPicker
        android:id="@+id/minute"
        android:layout_width="50dip"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dip"
        android:focusable="true"
        android:focusableInTouchMode="true"
        />

    <NumberPicker
        android:id="@+id/amPm2"
        android:layout_width="50dip"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dip"
        android:focusable="true"
        android:focusableInTouchMode="true"
        />
</LinearLayout>

自定義DateTimePicker

import java.text.DateFormatSymbols;
import java.util.Calendar;
import android.content.Context;
import android.text.format.DateFormat;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.NumberPicker;

public class DateTimePicker extends FrameLayout {

	private static final boolean DEFAULT_ENABLE_STATE = true;

	private static final int HOURS_IN_HALF_DAY = 12;
	private static final int HOURS_IN_ALL_DAY = 24;
	private static final int DAYS_IN_ALL_WEEK = 7;
	private static final int DATE_SPINNER_MIN_VAL = 0;
	private static final int DATE_SPINNER_MAX_VAL = DAYS_IN_ALL_WEEK - 1;
	private static final int HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW = 0;
	private static final int HOUR_SPINNER_MAX_VAL_24_HOUR_VIEW = 23;
	private static final int HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW = 1;
	private static final int HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW = 12;
	private static final int MINUT_SPINNER_MIN_VAL = 0;
	private static final int MINUT_SPINNER_MAX_VAL = 59;
	private static final int AMPM_SPINNER_MIN_VAL = 0;
	private static final int AMPM_SPINNER_MAX_VAL = 1;

	private final NumberPicker mDateSpinner;// 日期
	private final NumberPicker mHourSpinner;// 時
	private final NumberPicker mMinuteSpinner;// 分
	private final NumberPicker mAmPmSpinner;// 秒
	private Calendar mDate;

	private String[] mDateDisplayValues = new String[DAYS_IN_ALL_WEEK];

	private boolean mIsAm;

	private boolean mIs24HourView;

	private boolean mIsEnabled = DEFAULT_ENABLE_STATE;

	private boolean mInitialising;

	private OnDateTimeChangedListener mOnDateTimeChangedListener;

	/***
	 * 日期監聽
	 */
	private NumberPicker.OnValueChangeListener mOnDateChangedListener = new NumberPicker.OnValueChangeListener() {
		@Override
		public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
			mDate.add(Calendar.DAY_OF_YEAR, newVal - oldVal);
			//更新日期
			updateDateControl();
			//給接口傳值
			onDateTimeChanged();
		}
	};

	/***
	 * 時
	 */
	private NumberPicker.OnValueChangeListener mOnHourChangedListener = new NumberPicker.OnValueChangeListener() {
		@Override
		public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
			boolean isDateChanged = false;
			Calendar cal = Calendar.getInstance();
			if (!mIs24HourView) {
				if (!mIsAm && oldVal == HOURS_IN_HALF_DAY - 1
						&& newVal == HOURS_IN_HALF_DAY) {
					cal.setTimeInMillis(mDate.getTimeInMillis());
					cal.add(Calendar.DAY_OF_YEAR, 1);
					isDateChanged = true;
				} else if (mIsAm && oldVal == HOURS_IN_HALF_DAY
						&& newVal == HOURS_IN_HALF_DAY - 1) {
					cal.setTimeInMillis(mDate.getTimeInMillis());
					cal.add(Calendar.DAY_OF_YEAR, -1);
					isDateChanged = true;
				}
				if (oldVal == HOURS_IN_HALF_DAY - 1
						&& newVal == HOURS_IN_HALF_DAY
						|| oldVal == HOURS_IN_HALF_DAY
						&& newVal == HOURS_IN_HALF_DAY - 1) {
					mIsAm = !mIsAm;
					updateAmPmControl();
				}
			} else {
				if (oldVal == HOURS_IN_ALL_DAY - 1 && newVal == 0) {
					cal.setTimeInMillis(mDate.getTimeInMillis());
					cal.add(Calendar.DAY_OF_YEAR, 1);
					isDateChanged = true;
				} else if (oldVal == 0 && newVal == HOURS_IN_ALL_DAY - 1) {
					cal.setTimeInMillis(mDate.getTimeInMillis());
					cal.add(Calendar.DAY_OF_YEAR, -1);
					isDateChanged = true;
				}
			}
			int newHour = mHourSpinner.getValue() % HOURS_IN_HALF_DAY
					+ (mIsAm ? 0 : HOURS_IN_HALF_DAY);
			mDate.set(Calendar.HOUR_OF_DAY, newHour);
			onDateTimeChanged();
			if (isDateChanged) {
				setCurrentYear(cal.get(Calendar.YEAR));
				setCurrentMonth(cal.get(Calendar.MONTH));
				setCurrentDay(cal.get(Calendar.DAY_OF_MONTH));
			}
		}
	};

	private NumberPicker.OnValueChangeListener mOnMinuteChangedListener = new NumberPicker.OnValueChangeListener() {
		@Override
		public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
			int minValue = mMinuteSpinner.getMinValue();
			int maxValue = mMinuteSpinner.getMaxValue();
			int offset = 0;
			if (oldVal == maxValue && newVal == minValue) {
				offset += 1;
			} else if (oldVal == minValue && newVal == maxValue) {
				offset -= 1;
			}
			if (offset != 0) {
				mDate.add(Calendar.HOUR_OF_DAY, offset);
				mHourSpinner.setValue(getCurrentHour());
				updateDateControl();
				int newHour = getCurrentHourOfDay();
				if (newHour >= HOURS_IN_HALF_DAY) {
					mIsAm = false;
					updateAmPmControl();
				} else {
					mIsAm = true;
					updateAmPmControl();
				}
			}
			mDate.set(Calendar.MINUTE, newVal);
			onDateTimeChanged();
		}
	};

	private NumberPicker.OnValueChangeListener mOnAmPmChangedListener = new NumberPicker.OnValueChangeListener() {
		@Override
		public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
			mIsAm = !mIsAm;
			if (mIsAm) {
				mDate.add(Calendar.HOUR_OF_DAY, -HOURS_IN_HALF_DAY);
			} else {
				mDate.add(Calendar.HOUR_OF_DAY, HOURS_IN_HALF_DAY);
			}
			updateAmPmControl();
			onDateTimeChanged();
		}
	};

	public interface OnDateTimeChangedListener {
		void onDateTimeChanged(DateTimePicker view, int year, int month,
				int dayOfMonth, int hourOfDay, int minute);
	}

	public DateTimePicker(Context context) {
		this(context, System.currentTimeMillis());
	}

	public DateTimePicker(Context context, long date) {
		this(context, date, DateFormat.is24HourFormat(context));
	}

	public DateTimePicker(Context context, long date, boolean is24HourView) {
		super(context);
		mDate = Calendar.getInstance();
		mInitialising = true;
		mIsAm = getCurrentHourOfDay() >= HOURS_IN_HALF_DAY;// 上午,下午
		inflate(context, R.layout.datetime_picker, this);// 加載佈局

		mDateSpinner = (NumberPicker) findViewById(R.id.date);// 日期
		mDateSpinner.setMinValue(DATE_SPINNER_MIN_VAL);// 最小值0
		mDateSpinner.setMaxValue(DATE_SPINNER_MAX_VAL);// 最大值6
		mDateSpinner.setOnValueChangedListener(mOnDateChangedListener);

		mHourSpinner = (NumberPicker) findViewById(R.id.hour2);// 小時
		mHourSpinner.setOnValueChangedListener(mOnHourChangedListener);
		mMinuteSpinner = (NumberPicker) findViewById(R.id.minute);
		mMinuteSpinner.setMinValue(MINUT_SPINNER_MIN_VAL);
		mMinuteSpinner.setMaxValue(MINUT_SPINNER_MAX_VAL);
		mMinuteSpinner.setOnLongPressUpdateInterval(100);
		mMinuteSpinner.setOnValueChangedListener(mOnMinuteChangedListener);

		String[] stringsForAmPm = new DateFormatSymbols().getAmPmStrings();
		mAmPmSpinner = (NumberPicker) findViewById(R.id.amPm2);// 上午,下午
		mAmPmSpinner.setMinValue(AMPM_SPINNER_MIN_VAL);
		mAmPmSpinner.setMaxValue(AMPM_SPINNER_MAX_VAL);
		mAmPmSpinner.setDisplayedValues(stringsForAmPm);
		mAmPmSpinner.setOnValueChangedListener(mOnAmPmChangedListener);

		// update controls to initial state
		updateDateControl();
		updateHourControl();
		updateAmPmControl();

		set24HourView(is24HourView);

		// set to current time
		setCurrentDate(date);

		setEnabled(isEnabled());

		// set the content descriptions
		mInitialising = false;
	}

	@Override
	public void setEnabled(boolean enabled) {
		if (mIsEnabled == enabled) {
			return;
		}
		super.setEnabled(enabled);
		mDateSpinner.setEnabled(enabled);
		mMinuteSpinner.setEnabled(enabled);
		mHourSpinner.setEnabled(enabled);
		mAmPmSpinner.setEnabled(enabled);
		mIsEnabled = enabled;
	}

	@Override
	public boolean isEnabled() {
		return mIsEnabled;
	}

	/**
	 * Get the current date in millis
	 * 
	 * @return the current date in millis
	 */
	public long getCurrentDateInTimeMillis() {
		return mDate.getTimeInMillis();
	}

	/**
	 * Set the current date
	 * 
	 * @param date
	 *            The current date in millis
	 */
	public void setCurrentDate(long date) {
		Calendar cal = Calendar.getInstance();
		cal.setTimeInMillis(date);
		setCurrentDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
				cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.HOUR_OF_DAY),
				cal.get(Calendar.MINUTE));
	}

	/**
	 * Set the current date
	 * 
	 * @param year
	 *            The current year
	 * @param month
	 *            The current month
	 * @param dayOfMonth
	 *            The current dayOfMonth
	 * @param hourOfDay
	 *            The current hourOfDay
	 * @param minute
	 *            The current minute
	 */
	public void setCurrentDate(int year, int month, int dayOfMonth,
			int hourOfDay, int minute) {
		setCurrentYear(year);
		setCurrentMonth(month);
		setCurrentDay(dayOfMonth);
		setCurrentHour(hourOfDay);
		setCurrentMinute(minute);
	}

	/**
	 * Get current year
	 * 
	 * @return The current year
	 */
	public int getCurrentYear() {
		return mDate.get(Calendar.YEAR);
	}

	/**
	 * Set current year
	 * 
	 * @param year
	 *            The current year
	 */
	public void setCurrentYear(int year) {
		if (!mInitialising && year == getCurrentYear()) {
			return;
		}
		mDate.set(Calendar.YEAR, year);
		updateDateControl();
		onDateTimeChanged();
	}

	/**
	 * Get current month in the year
	 * 
	 * @return The current month in the year
	 */
	public int getCurrentMonth() {
		return mDate.get(Calendar.MONTH);
	}

	/**
	 * Set current month in the year
	 * 
	 * @param month
	 *            The month in the year
	 */
	public void setCurrentMonth(int month) {
		if (!mInitialising && month == getCurrentMonth()) {
			return;
		}
		mDate.set(Calendar.MONTH, month);
		updateDateControl();
		onDateTimeChanged();
	}

	/**
	 * Get current day of the month
	 * 
	 * @return The day of the month
	 */
	public int getCurrentDay() {
		return mDate.get(Calendar.DAY_OF_MONTH);
	}

	/**
	 * Set current day of the month
	 * 
	 * @param dayOfMonth
	 *            The day of the month
	 */
	public void setCurrentDay(int dayOfMonth) {
		if (!mInitialising && dayOfMonth == getCurrentDay()) {
			return;
		}
		mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
		updateDateControl();
		onDateTimeChanged();
	}

	/**
	 * Get current hour in 24 hour mode, in the range (0~23)
	 * 
	 * @return The current hour in 24 hour mode
	 */
	public int getCurrentHourOfDay() {
		return mDate.get(Calendar.HOUR_OF_DAY);
	}

	private int getCurrentHour() {
		if (mIs24HourView) {
			return getCurrentHourOfDay();
		} else {
			int hour = getCurrentHourOfDay();
			if (hour > HOURS_IN_HALF_DAY) {
				return hour - HOURS_IN_HALF_DAY;
			} else {
				return hour == 0 ? HOURS_IN_HALF_DAY : hour;
			}
		}
	}

	/**
	 * Set current hour in 24 hour mode, in the range (0~23)
	 * 
	 * @param hourOfDay
	 */
	public void setCurrentHour(int hourOfDay) {
		if (!mInitialising && hourOfDay == getCurrentHourOfDay()) {
			return;
		}
		mDate.set(Calendar.HOUR_OF_DAY, hourOfDay);
		if (!mIs24HourView) {
			if (hourOfDay >= HOURS_IN_HALF_DAY) {
				mIsAm = false;
				if (hourOfDay > HOURS_IN_HALF_DAY) {
					hourOfDay -= HOURS_IN_HALF_DAY;
				}
			} else {
				mIsAm = true;
				if (hourOfDay == 0) {
					hourOfDay = HOURS_IN_HALF_DAY;
				}
			}
			updateAmPmControl();
		}
		mHourSpinner.setValue(hourOfDay);
		onDateTimeChanged();
	}

	/**
	 * Get currentMinute
	 * 
	 * @return The Current Minute
	 */
	public int getCurrentMinute() {
		return mDate.get(Calendar.MINUTE);
	}

	/**
	 * Set current minute
	 */
	public void setCurrentMinute(int minute) {
		if (!mInitialising && minute == getCurrentMinute()) {
			return;
		}
		mMinuteSpinner.setValue(minute);
		mDate.set(Calendar.MINUTE, minute);
		onDateTimeChanged();
	}

	/**
	 * @return true if this is in 24 hour view else false.
	 */
	public boolean is24HourView() {
		return mIs24HourView;
	}

	/**
	 * Set whether in 24 hour or AM/PM mode.
	 * 
	 * @param is24HourView
	 *            True for 24 hour mode. False for AM/PM mode.
	 */
	public void set24HourView(boolean is24HourView) {
		if (mIs24HourView == is24HourView) {
			return;
		}
		mIs24HourView = is24HourView;
		mAmPmSpinner.setVisibility(is24HourView ? View.GONE : View.VISIBLE);
		int hour = getCurrentHourOfDay();
		updateHourControl();
		setCurrentHour(hour);
		updateAmPmControl();
	}

	private void updateDateControl() {
		 /** 
         * 星期幾算法 
         */ 
		Calendar cal = Calendar.getInstance();
		cal.setTimeInMillis(mDate.getTimeInMillis());
		cal.add(Calendar.DAY_OF_YEAR, -DAYS_IN_ALL_WEEK / 2 - 1);
		mDateSpinner.setDisplayedValues(null);
		for (int i = 0; i < DAYS_IN_ALL_WEEK; ++i) {
			cal.add(Calendar.DAY_OF_YEAR, 1);
			mDateDisplayValues[i] = (String) DateFormat.format("MM.dd EEEE",
					cal);// 06.09 星期三
		}
		mDateSpinner.setDisplayedValues(mDateDisplayValues);//給控件賦值
		mDateSpinner.setValue(DAYS_IN_ALL_WEEK / 2);//設置當前值
		mDateSpinner.invalidate();
	}

	private void updateAmPmControl() {
		if (mIs24HourView) {
			mAmPmSpinner.setVisibility(View.GONE);
		} else {
			int index = mIsAm ? Calendar.AM : Calendar.PM;
			mAmPmSpinner.setValue(index);
			mAmPmSpinner.setVisibility(View.VISIBLE);
		}
	}

	private void updateHourControl() {
		if (mIs24HourView) {
			mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_24_HOUR_VIEW);
			mHourSpinner.setMaxValue(HOUR_SPINNER_MAX_VAL_24_HOUR_VIEW);
		} else {
			mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW);
			mHourSpinner.setMaxValue(HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW);
		}
	}

	/**
	 * Set the callback that indicates the 'Set' button has been pressed.
	 * 
	 * @param callback
	 *            the callback, if null will do nothing
	 */
	public void setOnDateTimeChangedListener(OnDateTimeChangedListener callback) {
		mOnDateTimeChangedListener = callback;
	}

	private void onDateTimeChanged() {
		if (mOnDateTimeChangedListener != null) {
			mOnDateTimeChangedListener.onDateTimeChanged(this,
					getCurrentYear(), getCurrentMonth(), getCurrentDay(),
					getCurrentHourOfDay(), getCurrentMinute());
		}
	}
}

對話框:

import java.text.SimpleDateFormat;
import java.util.Calendar;

import com.ycf.blog_02_datepiter.DateTimePicker.OnDateTimeChangedListener;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.text.format.DateFormat;
import android.text.format.DateUtils;

public class DateTimePickerDialog extends AlertDialog implements
		OnClickListener {
	private Calendar mDate = Calendar.getInstance();
	private boolean mIs24HourView;
	private OnDateTimeSetListener mOnDateTimeSetListener;
	private DateTimePicker mDateTimePicker;

	private int format = 1;
	private String date = "";
	public static int YEAR_MONTH_DATE_HOUR_MIN_SEC = 1;// 年月日時分秒
	public static int YEAR_MONTH_DATE_WEEK_HOUR_MIN_SEC = 2;// 年月日周時分秒
	public static int YEAR_MONTH_DATE = 3;// 年月日
	public static int HOUR_MIN_SEC = 4;// 時分秒

	public interface OnDateTimeSetListener {
		void OnDateTimeSet(AlertDialog dialog, String date);
	}

	/***
	 * 構造函數初始化界面
	 * 
	 * @param context
	 *            上下文
	 * @param date
	 *            系統當前時間,用於初始化界面
	 */
	@SuppressWarnings("deprecation")
	public DateTimePickerDialog(Context context, long date) {
		super(context);
		mDateTimePicker = new DateTimePicker(context);
		setView(mDateTimePicker);// 給對話框加View
		mDateTimePicker
				.setOnDateTimeChangedListener(new OnDateTimeChangedListener() {// View界面監聽
					public void onDateTimeChanged(DateTimePicker view,
							int year, int month, int dayOfMonth, int hourOfDay,
							int minute) {
						mDate.set(Calendar.YEAR, year);
						mDate.set(Calendar.MONTH, month);
						mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
						mDate.set(Calendar.HOUR_OF_DAY, hourOfDay);
						mDate.set(Calendar.MINUTE, minute);
						updateTitle(mDate.getTimeInMillis());
					}
				});
		mDate.setTimeInMillis(date);
		mDate.set(Calendar.SECOND, 0);
		mDateTimePicker.setCurrentDate(mDate.getTimeInMillis());
		setButton("確定", this);
		setButton2("取消", (OnClickListener) null);
		mIs24HourView = DateFormat.is24HourFormat(this.getContext());
		updateTitle(mDate.getTimeInMillis());
	}

	public void setOnDateTimeSetListener(OnDateTimeSetListener callBack,
			int formart) {
		this.format = formart;
		mOnDateTimeSetListener = callBack;
	}

	/***
	 * 返回帶星期的時間
	 * 
	 * @param date
	 */
	private void updateTitle(long date) {
		int flag = DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_SHOW_DATE
				| DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_SHOW_TIME;
		flag |= mIs24HourView ? DateUtils.FORMAT_24HOUR
				: DateUtils.FORMAT_24HOUR;
		// 給對話框title賦值
		this.date = DateUtils.formatDateTime(this.getContext(), date, flag);
		setTitle(DateUtils.formatDateTime(this.getContext(), date, flag));
	}

	/***
	 * 按鈕事件
	 */
	public void onClick(DialogInterface arg0, int arg1) {
		// 年月日周,時分秒
		int flag_YRDWHMS = DateUtils.FORMAT_SHOW_YEAR
				| DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_WEEKDAY
				| DateUtils.FORMAT_SHOW_TIME;
		flag_YRDWHMS |= mIs24HourView ? DateUtils.FORMAT_24HOUR
				: DateUtils.FORMAT_24HOUR;
		// 年月日
		int flag_YRD = DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_SHOW_DATE;
		// 時分秒
		int flag_HMS = DateUtils.FORMAT_SHOW_TIME;

		if (mOnDateTimeSetListener != null) {
			// 年月日,時分秒
			if (this.format == 1) {
				mOnDateTimeSetListener.OnDateTimeSet(this,
						getStringDate(mDate.getTimeInMillis()));
			} else if (this.format == 2) {
				// 年月日,時分秒
				mOnDateTimeSetListener.OnDateTimeSet(this, date);
			} else if (this.format == 3) {
				// 年月日
				mOnDateTimeSetListener.OnDateTimeSet(
						this,
						DateUtils.formatDateTime(this.getContext(),
								mDate.getTimeInMillis(), flag_YRD));

			} else if (this.format == 4) {
				// 時分秒
				mOnDateTimeSetListener.OnDateTimeSet(
						this,
						DateUtils.formatDateTime(this.getContext(),
								mDate.getTimeInMillis(), flag_HMS));

			}

		}
	}

	/**
	 * 將長時間格式字符串轉換爲時間 yyyy-MM-dd HH:mm:ss
	 * 
	 */
	public String getStringDate(Long date) {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String dateString = formatter.format(date);

		return dateString;
	}

}

Activity調用:

import java.text.SimpleDateFormat;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import com.ycf.blog_02_datepiter.DateTimePickerDialog.OnDateTimeSetListener;

public class MainActivity extends Activity {
	TextView txt;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		txt = (TextView) this.findViewById(R.id.time);
		Button btn = (Button) this.findViewById(R.id.btn_datePicker);
		btn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				setReminder();
			}
		});
	}

	/***
	 * YEAR_MONTH_DATE_WEEK_HOUR_MIN_SEC  返回年月日周時分秒
	 * YEAR_MONTH_DATE_HOUR_MIN_SEC	返回年月日十分秒
	 * YEAR_MONTH_DATE    返回年月日
	 * HOUR_MIN_SEC   時分秒
	 */
	private void setReminder() {
		DateTimePickerDialog d = new DateTimePickerDialog(this,
				System.currentTimeMillis());
		d.setOnDateTimeSetListener(new OnDateTimeSetListener() {
			@Override
			public void OnDateTimeSet(AlertDialog dialog, String date) {
				txt.setText("您輸入的日期是:" + date);
			}
		}, DateTimePickerDialog.YEAR_MONTH_DATE_WEEK_HOUR_MIN_SEC);//返回年月日,周,時分秒
		d.show();
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章