Android——使用DatePicker和TimePicker顯示當前日期和時間
阿新 • • 發佈:2019-01-07
1.DatePicker和TimePicker兩種實現動態輸入日期和時間的功能
2.DatePickerDialog和TimePickerDialog兩種實現動態輸入日期和時間的對話方塊
3.兩組監測日期和時間改變的監聽器
(1)OnDateChangedListener()和OnTimeChangedListener()
當用戶更改了DatePicker裡的年、月、日時,將觸發OnDateChangedListener監聽器的onDateChanged()事件
當用戶更改了TimePicker裡的時、分時,將觸發OnTimeChangedListener監聽器的onTimeChanged()事件
(2)OnDateSetListener()和OnTimeSetListener
當用戶更改了DatePickerDialog裡的年、月、日時,將觸發OnDateSetListener監聽器的onDateSet()事件
當用戶更改了TimePickerDialog裡的時、分時,將觸發OnTimeSetListener監聽器的onTimeSet()事件
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <DatePicker android:id="@+id/datePicker" android:layout_width="wrap_content" android:layout_height="149dp"/> <TimePicker android:id="@+id/timePicker" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
MainActivity.java
import android.app.DatePickerDialog; import android.app.TimePickerDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.DatePicker; import android.widget.TimePicker; import java.util.Calendar; public class MainActivity extends AppCompatActivity { private TimePicker timePicker; private DatePicker datePicker; private Calendar calendar; private int year; private int month; private int day; private int hour; private int minute; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //獲取日曆的一個物件 calendar = Calendar.getInstance(); //獲取年月日時分的資訊 year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH)+1; day = calendar.get(Calendar.DAY_OF_MONTH); hour = calendar.get(Calendar.HOUR_OF_DAY); minute = calendar.get(Calendar.MINUTE); setTitle(year + "-" + month + "-" + day + "-" + hour + "-" + minute); datePicker = (DatePicker) findViewById(R.id.datePicker); timePicker = (TimePicker) findViewById(R.id.timePicker); //datePicker初始化 datePicker.init(year, month-1, day, new DatePicker.OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { setTitle(year + "-" + (monthOfYear+1) + "-" + dayOfMonth); } }); //timePicker timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() { @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { setTitle(hourOfDay + ":" + minute); } }); //DatePickerDialog new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { setTitle(year + "-" + (monthOfYear+1) + "-" + dayOfMonth); } },year, month-1, day).show(); //TimePickerDialog new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { setTitle(hourOfDay + ":" + minute); } },hour,minute,true).show(); } }
4.注意:DatePciker物件以init()這個方法來指定DatePicker初始的年、月、日及OnDateChangedListener()的事件;而TimePicker物件則是直接以setOnTimeChangedListener()事件來處理時間改變時程式要做的操作。