实现效果:
自定义日期实现步骤:
- 设置textview点击事件,弹出自定义的对话框
- 重写创建对话框
- 准备日期监听器,给对话框赋值
日期比较步骤:
- 获取textview值并判断是否为空
- 设置显示的日期格式
- 使用Date.before()函数判断你所选的时间是否是今天之前,或者时间1是否在时间2之前
layout布局:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android_date" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.android_date.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
MainActivity
package com.example.android_date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; import android.app.Activity; import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.app.Dialog; import android.os.Bundle; import android.view.View; import android.widget.DatePicker; import android.widget.TextView; import android.widget.Toast; /** * 自定义日期组件 * * @author yazhizhao 20142014-10-23上午11:45:04 */ public class MainActivity extends Activity { private int mMonth; private int mDay; private int mYear; private TextView tvDate1; private TextView tvDate2; private String tvDate1Str; private String tvDate2Str; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvDate1 = (TextView) findViewById(R.id.tv_date1); tvDate2 = (TextView) findViewById(R.id.tv_date2); // 为日期控件赋值 final Calendar c = Calendar.getInstance(); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); tvDate1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub showDialog(1); } }); tvDate2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub showDialog(2); } }); } // 重写创建对话框方法 protected Dialog onCreateDialog(int id) { switch (id) { case 1: // 把Activity上下文、日期设置监听器、以及日期的年月日都作为参数传给那个新成立的对话框组件 return new DatePickerDialog(this, dsl, mYear, mMonth, mDay); case 2: // 把Activity上下文、日期设置监听器、以及日期的年月日都作为参数传给那个新成立的对话框组件 return new DatePickerDialog(this, ds2, mYear, mMonth, mDay); } return null; } // 准备日期设置监听器 private OnDateSetListener dsl = new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; mMonth = monthOfYear; mDay = dayOfMonth; tvDate1.setText(mYear + "-" + (mMonth + 1) + "-" + mDay); } }; // 准备日期设置监听器 private OnDateSetListener ds2 = new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; mMonth = monthOfYear; mDay = dayOfMonth; tvDate2.setText(mYear + "-" + (mMonth + 1) + "-" + mDay); } }; /** * 对比日期的点击事件 * * @author yazhizhao 20142014-10-23上午11:55:11 * @param v */ public void click(View v) { Date time1 = null; Date time2 = null; // 判断时间1和时间2是否为空 tvDate1Str = tvDate1.getText().toString().trim(); tvDate2Str = tvDate2.getText().toString().trim(); if (tvDate1Str == null || "".equals(tvDate1Str)) { Toast.makeText(getApplicationContext(), "时间1不为空", Toast.LENGTH_SHORT).show(); return; } else if (tvDate2Str == null || "".equals(tvDate2Str)) { Toast.makeText(getApplicationContext(), "时间2不为空", Toast.LENGTH_SHORT).show(); return; } // 日期使用"yyyy-MM-dd"格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA); try { time1 = sdf.parse(tvDate1Str); time2 = sdf.parse(tvDate2Str); } catch (ParseException e) { e.printStackTrace(); } // 判断时间1,2前后 Date nowdate = new Date(); if (time1.before(nowdate)) { Toast.makeText(getApplicationContext(), "请选择正确的时间1", Toast.LENGTH_SHORT).show(); return; } else if (time2.before(time1)) { Toast.makeText(getApplicationContext(), "请选择正确的时间2", Toast.LENGTH_SHORT).show(); return; } else { Toast.makeText(getApplicationContext(), "ok", Toast.LENGTH_SHORT) .show(); } } }
运行效果:
时间: 2024-10-29 19:11:14