- package com.wwj.datetimepicker;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.widget.DatePicker;
- import android.widget.DatePicker.OnDateChangedListener;
- import android.widget.EditText;
- import android.widget.LinearLayout;
- import android.widget.TimePicker;
- import android.widget.TimePicker.OnTimeChangedListener;
- /**
- * 日期时间选择控件 使用方法: private EditText inputDate;//需要设置的日期时间文本编辑框 private String
- * initDateTime="2012年9月3日 14:44",//初始日期时间值 在点击事件中使用:
- * inputDate.setOnClickListener(new OnClickListener() {
- *
- * @Override public void onClick(View v) { DateTimePickDialogUtil
- * dateTimePicKDialog=new
- * DateTimePickDialogUtil(SinvestigateActivity.this,initDateTime);
- * dateTimePicKDialog.dateTimePicKDialog(inputDate);
- *
- * } });
- *
- * @author
- */
- public class DateTimePickDialogUtil implements OnDateChangedListener,
- OnTimeChangedListener {
- private DatePicker datePicker;
- private TimePicker timePicker;
- private AlertDialog ad;
- private String dateTime;
- private String initDateTime;
- private Activity activity;
- /**
- * 日期时间弹出选择框构造函数
- *
- * @param activity
- * :调用的父activity
- * @param initDateTime
- * 初始日期时间值,作为弹出窗口的标题和日期时间初始值
- */
- public DateTimePickDialogUtil(Activity activity, String initDateTime) {
- this.activity = activity;
- this.initDateTime = initDateTime;
- }
- public void init(DatePicker datePicker, TimePicker timePicker) {
- Calendar calendar = Calendar.getInstance();
- if (!(null == initDateTime || "".equals(initDateTime))) {
- calendar = this.getCalendarByInintData(initDateTime);
- } else {
- initDateTime = calendar.get(Calendar.YEAR) + "年"
- + calendar.get(Calendar.MONTH) + "月"
- + calendar.get(Calendar.DAY_OF_MONTH) + "日 "
- + calendar.get(Calendar.HOUR_OF_DAY) + ":"
- + calendar.get(Calendar.MINUTE);
- }
- datePicker.init(calendar.get(Calendar.YEAR),
- calendar.get(Calendar.MONTH),
- calendar.get(Calendar.DAY_OF_MONTH), this);
- timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));
- timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE));
- }
- /**
- * 弹出日期时间选择框方法
- *
- * @param inputDate
- * :为需要设置的日期时间文本编辑框
- * @return
- */
- public AlertDialog dateTimePicKDialog(final EditText inputDate) {
- LinearLayout dateTimeLayout = (LinearLayout) activity
- .getLayoutInflater().inflate(R.layout.common_datetime, null);
- datePicker = (DatePicker) dateTimeLayout.findViewById(R.id.datepicker);
- timePicker = (TimePicker) dateTimeLayout.findViewById(R.id.timepicker);
- init(datePicker, timePicker);
- timePicker.setIs24HourView(true);
- timePicker.setOnTimeChangedListener(this);
- ad = new AlertDialog.Builder(activity)
- .setTitle(initDateTime)
- .setView(dateTimeLayout)
- .setPositiveButton("设置", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- inputDate.setText(dateTime);
- }
- })
- .setNegativeButton("取消", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- inputDate.setText("");
- }
- }).show();
- onDateChanged(null, 0, 0, 0);
- return ad;
- }
- public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
- onDateChanged(null, 0, 0, 0);
- }
- public void onDateChanged(DatePicker view, int year, int monthOfYear,
- int dayOfMonth) {
- // 获得日历实例
- Calendar calendar = Calendar.getInstance();
- calendar.set(datePicker.getYear(), datePicker.getMonth(),
- datePicker.getDayOfMonth(), timePicker.getCurrentHour(),
- timePicker.getCurrentMinute());
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
- dateTime = sdf.format(calendar.getTime());
- ad.setTitle(dateTime);
- }
- /**
- * 实现将初始日期时间2012年07月02日 16:45 拆分成年 月 日 时 分 秒,并赋值给calendar
- *
- * @param initDateTime
- * 初始日期时间值 字符串型
- * @return Calendar
- */
- private Calendar getCalendarByInintData(String initDateTime) {
- Calendar calendar = Calendar.getInstance();
- // 将初始日期时间2012年07月02日 16:45 拆分成年 月 日 时 分 秒
- String date = spliteString(initDateTime, "日", "index", "front"); // 日期
- String time = spliteString(initDateTime, "日", "index", "back"); // 时间
- String yearStr = spliteString(date, "年", "index", "front"); // 年份
- String monthAndDay = spliteString(date, "年", "index", "back"); // 月日
- String monthStr = spliteString(monthAndDay, "月", "index", "front"); // 月
- String dayStr = spliteString(monthAndDay, "月", "index", "back"); // 日
- String hourStr = spliteString(time, ":", "index", "front"); // 时
- String minuteStr = spliteString(time, ":", "index", "back"); // 分
- int currentYear = Integer.valueOf(yearStr.trim()).intValue();
- int currentMonth = Integer.valueOf(monthStr.trim()).intValue() - 1;
- int currentDay = Integer.valueOf(dayStr.trim()).intValue();
- int currentHour = Integer.valueOf(hourStr.trim()).intValue();
- int currentMinute = Integer.valueOf(minuteStr.trim()).intValue();
- calendar.set(currentYear, currentMonth, currentDay, currentHour,
- currentMinute);
- return calendar;
- }
- /**
- * 截取子串
- *
- * @param srcStr
- * 源串
- * @param pattern
- * 匹配模式
- * @param indexOrLast
- * @param frontOrBack
- * @return
- */
- public static String spliteString(String srcStr, String pattern,
- String indexOrLast, String frontOrBack) {
- String result = "";
- int loc = -1;
- if (indexOrLast.equalsIgnoreCase("index")) {
- loc = srcStr.indexOf(pattern); // 取得字符串第一次出现的位置
- } else {
- loc = srcStr.lastIndexOf(pattern); // 最后一个匹配串的位置
- }
- if (frontOrBack.equalsIgnoreCase("front")) {
- if (loc != -1)
- result = srcStr.substring(0, loc); // 截取子串
- } else {
- if (loc != -1)
- result = srcStr.substring(loc + 1, srcStr.length()); // 截取子串
- }
- return result;
- }
- }
2...............................................................
package com.eoe.androidcurrenttime;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv_contentTime ,tv_contentTime2, tv_contentTime3;
private Button btn_andTime ,btn_andTime3;
private String spliteStrTime = "2016-01-21";
private String yearStr;
private String monthStr;
private String dayStr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_contentTime = (TextView) findViewById(R.id.tv_contentTime);
tv_contentTime2 = (TextView) findViewById(R.id.tv_contentTime2);
tv_contentTime3 = (TextView) findViewById(R.id.tv_contentTime3);
btn_andTime = (Button) findViewById(R.id.btn_andTime);
btn_andTime3 = (Button) findViewById(R.id.btn_andTime3);
//获取系统当前的时间
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
String time = "当前时间:"+year+"-"+(month+1)+"-"+day;
tv_contentTime.setText(time);
btn_andTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) { //获取当前系统日期(也可以有时间 yyyy-MM-dd hh:mm:ss)并设置指定显示的格式
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd");
Date curDate = new Date(System.currentTimeMillis());//获取当前时间
String str = formatter.format(curDate);
tv_contentTime2.setText(str);
}
});
btn_andTime3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
getCalendarByInintData(spliteStrTime);
String spliteStr = yearStr +"---"+monthStr+"---"+dayStr;
tv_contentTime3.setText(spliteStr);
}
});
}
/**
* 实现将初始日期时间2012年07月02日 16:45 拆分成年 月 日 时 分 秒,并赋值给calendar
*
* @param initDateTime
* 初始日期时间值 字符串型
* @return Calendar
*/
private Calendar getCalendarByInintData(String initDateTime) {
Calendar calendar = Calendar.getInstance();
// 将初始日期时间2012年07月02日 16:45 拆分成年 月 日 时 分 秒
// String date = spliteString(initDateTime, " ", "index", "front"); // 日期
// String time = spliteString(initDateTime, "日", "index", "back"); // 时间
yearStr = spliteString(initDateTime, "-", "index", "front"); // 年份
String monthAndDay = spliteString(initDateTime, "-", "index", "back"); // 月日
monthStr = spliteString(monthAndDay, "-", "index", "front"); // 月
dayStr = spliteString(monthAndDay, "-", "index", "back"); // 日
// String hourStr = spliteString(time, ":", "index", "front"); // 时
// String minuteStr = spliteString(time, ":", "index", "back"); // 分
int currentYear = Integer.valueOf(yearStr.trim()).intValue();
int currentMonth = Integer.valueOf(monthStr.trim()).intValue() - 1;
int currentDay = Integer.valueOf(dayStr.trim()).intValue();
// int currentHour = Integer.valueOf(hourStr.trim()).intValue();
// int currentMinute = Integer.valueOf(minuteStr.trim()).intValue();
calendar.set(currentYear, currentMonth, currentDay);
return calendar;
}
/**
* 截取子串
*
* @param srcStr
* 源串
* @param pattern
* 匹配模式
* @param indexOrLast
* @param frontOrBack
* @return
*/
public static String spliteString(String srcStr, String pattern,
String indexOrLast, String frontOrBack) {
String result = "";
int loc = -1;
if (indexOrLast.equalsIgnoreCase("index")) {
loc = srcStr.indexOf(pattern); // 取得字符串第一次出现的位置
} else {
loc = srcStr.lastIndexOf(pattern); // 最后一个匹配串的位置
}
if (frontOrBack.equalsIgnoreCase("front")) {
if (loc != -1)
result = srcStr.substring(0, loc); // 截取子串
} else {
if (loc != -1)
result = srcStr.substring(loc + 1, srcStr.length()); // 截取子串
}
return result;
}
}
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv_contentTime ,tv_contentTime2, tv_contentTime3;
private Button btn_andTime ,btn_andTime3;
private String spliteStrTime = "2016-01-21";
private String yearStr;
private String monthStr;
private String dayStr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_contentTime = (TextView) findViewById(R.id.tv_contentTime);
tv_contentTime2 = (TextView) findViewById(R.id.tv_contentTime2);
tv_contentTime3 = (TextView) findViewById(R.id.tv_contentTime3);
btn_andTime = (Button) findViewById(R.id.btn_andTime);
btn_andTime3 = (Button) findViewById(R.id.btn_andTime3);
//获取系统当前的时间
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
String time = "当前时间:"+year+"-"+(month+1)+"-"+day;
tv_contentTime.setText(time);
btn_andTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) { //获取当前系统日期(也可以有时间 yyyy-MM-dd hh:mm:ss)并设置指定显示的格式
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd");
Date curDate = new Date(System.currentTimeMillis());//获取当前时间
String str = formatter.format(curDate);
tv_contentTime2.setText(str);
}
});
btn_andTime3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
getCalendarByInintData(spliteStrTime);
String spliteStr = yearStr +"---"+monthStr+"---"+dayStr;
tv_contentTime3.setText(spliteStr);
}
});
}
/**
* 实现将初始日期时间2012年07月02日 16:45 拆分成年 月 日 时 分 秒,并赋值给calendar
*
* @param initDateTime
* 初始日期时间值 字符串型
* @return Calendar
*/
private Calendar getCalendarByInintData(String initDateTime) {
Calendar calendar = Calendar.getInstance();
// 将初始日期时间2012年07月02日 16:45 拆分成年 月 日 时 分 秒
// String date = spliteString(initDateTime, " ", "index", "front"); // 日期
// String time = spliteString(initDateTime, "日", "index", "back"); // 时间
yearStr = spliteString(initDateTime, "-", "index", "front"); // 年份
String monthAndDay = spliteString(initDateTime, "-", "index", "back"); // 月日
monthStr = spliteString(monthAndDay, "-", "index", "front"); // 月
dayStr = spliteString(monthAndDay, "-", "index", "back"); // 日
// String hourStr = spliteString(time, ":", "index", "front"); // 时
// String minuteStr = spliteString(time, ":", "index", "back"); // 分
int currentYear = Integer.valueOf(yearStr.trim()).intValue();
int currentMonth = Integer.valueOf(monthStr.trim()).intValue() - 1;
int currentDay = Integer.valueOf(dayStr.trim()).intValue();
// int currentHour = Integer.valueOf(hourStr.trim()).intValue();
// int currentMinute = Integer.valueOf(minuteStr.trim()).intValue();
calendar.set(currentYear, currentMonth, currentDay);
return calendar;
}
/**
* 截取子串
*
* @param srcStr
* 源串
* @param pattern
* 匹配模式
* @param indexOrLast
* @param frontOrBack
* @return
*/
public static String spliteString(String srcStr, String pattern,
String indexOrLast, String frontOrBack) {
String result = "";
int loc = -1;
if (indexOrLast.equalsIgnoreCase("index")) {
loc = srcStr.indexOf(pattern); // 取得字符串第一次出现的位置
} else {
loc = srcStr.lastIndexOf(pattern); // 最后一个匹配串的位置
}
if (frontOrBack.equalsIgnoreCase("front")) {
if (loc != -1)
result = srcStr.substring(0, loc); // 截取子串
} else {
if (loc != -1)
result = srcStr.substring(loc + 1, srcStr.length()); // 截取子串
}
return result;
}
}