项目步骤:

1.在Main.xml布局文件中定义对应的组件,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" >

<!-- 日期控件布局 -->

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal" >

<EditText

android:id="@+id/showdate"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_weight="1" />

<Button

android:id="@+id/pickdate"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="选择日期" />

</LinearLayout>

<!-- 时间控件布局 -->

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal" >

<EditText

android:id="@+id/showtime"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_weight="1" />

<Button

android:id="@+id/picktime"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="选择时间" />

</LinearLayout>

</LinearLayout>

2.在Activity中声明日期、时间控件,完成对其操作,Activity内容如下:

public class MainActivity extends Activity {

//声明变量,获取组件

private EditText showDate = null;

private Button pickDate = null;

private EditText showTime = null;

private Button pickTime = null;

//声明变量,用于对日期、时间控件的操作

private static final int SHOW_DATAPICK = 0;

private static final int DATE_DIALOG_ID = 1;

private static final int SHOW_TIMEPICK = 2;

private static final int TIME_DIALOG_ID = 3;

private int mYear;  private int mMonth;

private int mDay;  private int mHour;

private int mMinute;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//设置布局文件

setContentView(R.layout.main);

// 初始化控件和UI视图

initializeViews();

//新建一个Calendar对象获取Calendar信息

final Calendar c = Calendar.getInstance();

//将年、月、日、时、分分别获取出来

mYear = c.get(Calendar.YEAR);

mMonth = c.get(Calendar.MONTH);

mDay = c.get(Calendar.DAY_OF_MONTH);

mHour = c.get(Calendar.HOUR_OF_DAY);

mMinute = c.get(Calendar.MINUTE);

//设置日期

setDateTime();

//设置时间

setTimeOfDay();

}

/**   * 初始化控件和UI视图   */

private void initializeViews() {

//根据id在布局文件中找到对应的组件

showDate = (EditText) findViewById(R.id.showdate);

pickDate = (Button) findViewById(R.id.pickdate);

showTime = (EditText) findViewById(R.id.showtime);

pickTime = (Button) findViewById(R.id.picktime);

//为pickDate设置监听器,点击显示日期控件

pickDate.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//新建一个Message对象

Message msg = new Message();

if (pickDate.equals((Button) v)) {

msg.what = MainActivity.SHOW_DATAPICK;

}

//发出消息

MainActivity.this.dateandtimeHandler.sendMessage(msg);

}

});

//为pickTime设置监听器,点击显示时间控件

pickTime.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Message msg = new Message();

if (pickTime.equals((Button) v)) {

msg.what = MainActivity.SHOW_TIMEPICK;

}

//发出消息

MainActivity.this.dateandtimeHandler.sendMessage(msg);

}

});

}

/**   * 设置日期   */

private void setDateTime() {

final Calendar c = Calendar.getInstance();

mYear = c.get(Calendar.YEAR);

mMonth = c.get(Calendar.MONTH);

mDay = c.get(Calendar.DAY_OF_MONTH);

//更新日期

updateDateDisplay();

}

/**   * 更新日期显示   */

private void updateDateDisplay() {

showDate.setText(new StringBuilder().append(mYear).append("-")     .append((mMonth + 1) < 10 ? "0" + (mMonth + 1) : (mMonth + 1))     .append("-").append((mDay < 10) ? "0" + mDay : mDay));

}

/**   * 日期控件的事件   */

private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {

public void onDateSet(DatePicker view, int year, int monthOfYear,     int dayOfMonth) {

mYear = year;    mMonth = monthOfYear;    mDay = dayOfMonth;

//更新日期

updateDateDisplay();

}

};

/**   * 设置时间   */

private void setTimeOfDay() {

final Calendar c = Calendar.getInstance();

mHour = c.get(Calendar.HOUR_OF_DAY);

mMinute = c.get(Calendar.MINUTE);

//更新日期

updateTimeDisplay();

}

/**   * 更新时间显示   */

private void updateTimeDisplay() {

showTime.setText(new StringBuilder().append(mHour).append(":")     .append((mMinute < 10) ? "0" + mMinute : mMinute));

}

/**   * 时间控件事件   */

private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {

@Override

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

mHour = hourOfDay;

mMinute = minute;

//更新时间

updateTimeDisplay();

}

};

/**   * 判断用户选择并作出响应   */

@Override

protected Dialog onCreateDialog(int id) {

switch (id) {

case DATE_DIALOG_ID:    return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,      mDay);

case TIME_DIALOG_ID:    return new TimePickerDialog(this, mTimeSetListener, mHour, mMinute,      true);

}   return null;

}

@Override

protected void onPrepareDialog(int id, Dialog dialog) {

switch (id) {

case DATE_DIALOG_ID:    ((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);    break;

case TIME_DIALOG_ID:    ((TimePickerDialog) dialog).updateTime(mHour, mMinute);    break;

}

}

/**   * 处理日期和时间控件的Handler   */

Handler dateandtimeHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

case MainActivity.SHOW_DATAPICK:

//显示日期控件

showDialog(DATE_DIALOG_ID);     break;

case MainActivity.SHOW_TIMEPICK:

//显示时间控件

showDialog(TIME_DIALOG_ID);     break;

}

}

};

}

【基础篇】DatePickerDialog日期控件的基本使用(二) ——分别获取年、月、日、时、分的更多相关文章

  1. 【基础篇】DatePickerDialog日期控件的基本使用(一)

    项目步骤: 1.首先在Main.xml布局文件中添加一个Button标签,用来点击显示日期控件,Main.xml内容如下: <RelativeLayout xmlns:android=" ...

  2. iOS开发基础篇-手写控件

    一.手写控件的步骤 1)使用相应的控件类创建控件对象: 2)设置该控件的各种属性: 3)添加空间到视图中: 4)如果是 UIButton 等控件,还需考虑控件的单击事件等: 二.添加 UIButton ...

  3. cocos2dx基础篇(10) 按钮控件CCControlButton

    [3.x] (1)去掉 “CC” (2)对象类 CCObject 改为 Ref (3)按钮事件回调依旧为 cccontrol_selector ,没有使用 CC_CALLBACK_2 (4)按钮状态  ...

  4. cocos2dx基础篇(9) 滑块控件CCControlSlider

    [3.x] (1)去掉 “CC” (2)对象类 CCObject 改为 Ref (3)CCControlEvent 改为强枚举 Control::EventType (4)CCControlEvent ...

  5. JQuery EasyUI 日期控件 怎样做到只显示年月,而不显示日

    标题问题的答案在OSChina中 http://www.oschina.net/question/2282354_224401?fromerr=lHJTcN89 我还是把这个记录下来 ======== ...

  6. ASP.NET C# 日期 时间 年 月 日 时 分 秒 格式及转换(转自happymagic的专栏)

    在平时编码中,经常要把日期转换成各种各样的形式输出或保持,今天专门做了个测试,发现DateTime的ToString()方法居然有这么多的表现形式,和大家一起分享. DateTime time=Dat ...

  7. ASP.NET 日期 时间 年 月 日 时 分 秒 格式及转换

    在平时编码中,经常要把日期转换成各种各样的形式输出或保持,今天专门做了个测试,发现DateTime的ToString()方法居然有这么多的表现形式,和大家一起分享. DateTime time=Dat ...

  8. Js 日期字符串分别截取 年 月 日 时 分 秒

    function shijiantime(times){ var timearr = times.replace(" ", ":").replace(/\:/g ...

  9. Wdatepicker日期控件的使用指南 (转)

    Wdatepicker日期控件的使用指南 标签: inputclass语言functionstring正则表达式 2012-02-10 15:48 40826人阅读 评论(5) 收藏 举报 .embo ...

随机推荐

  1. 2016 10 26考试 NOIP模拟赛 杂题

    Time 7:50 AM -> 11:15 AM 感觉今天考完后,我的内心是崩溃的 试题 考试包 T1: 首先看起来是个贪心,然而,然而,看到那个100%数据为n <= 2000整个人就虚 ...

  2. javascript jquery 推断对象为空的方式

    java中存在非常多空指针的问题,须要常常做预防和推断,如若不然,控制台出现恼人的异常,让人信心备受打击,早期敲代码的时候没有经验,不能依据异常信息找到问题的根源,唯一做的事情就是祈祷,千万别出现什么 ...

  3. MYSQL源代码编译的变动

    Mysql的安装,对于mysql不同版本号的mysql源代码编译方式不一样 5.6.2的版本号開始编译方式已经由 configure 变成了cmake方式 ,相关的新的 编译方式在mysql官网已经提 ...

  4. nyoj--1233--差值(贪心模拟+大数)

    差值 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 输入一个整数数组,将它们连接起来排成一个数,找出能排出的所有数字中最大,最小的两个,输出两个数的差值.例如输入数组{ ...

  5. 7.配置文件mocha.opts

    转自:http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html Mocha允许在test目录下面,放置配置文件m ...

  6. 8.最佳的MongoDB客户端管理工具

    转自:https://blog.csdn.net/chszs/article/details/51348248

  7. 2.mongoDB 介绍(特点、优点、原理)

    转自:https://www.cnblogs.com/hoojo/archive/2011/06/01/2066119.html 介绍:MongoDB是一个基于分布式文件存储的数据库.由C++语言编写 ...

  8. 5.IntellijIDEA常用快捷键总结

    转自:https://blog.csdn.net/qq_17586821/article/details/52554731下面的这些常用快捷键需要在实际操作中不断地体会才能真正感受到它们的方便之处. ...

  9. [poj 2891] Strange Way to Express Integers 解题报告(excrt扩展中国剩余定理)

    题目链接:http://poj.org/problem?id=2891 题目大意: 求解同余方程组,不保证模数互质 题解: 扩展中国剩余定理板子题 #include<algorithm> ...

  10. Why functions - Not only for python

    It may not be clear why it is worth the trouble to divide a program into functions. There are a lot ...