计算时间差
程序员文章站
2022-06-21 17:44:55
...
public static int getDateCount(String start,String end) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date d1 = df.parse(start);
Date d2 = df.parse(end);
//Date d2 = new Date(System.currentTimeMillis());//你也可以获取当前时间
long diff = d1.getTime() - d2.getTime();//这样得到的差值是微秒级别
} catch (ParseException e) {
}
return getDateCount(start,end);
}
//这里做东西要用到天数
//return (int) (diff / (1000 * 60 * 60 * 24));
//这一句就是将毫秒转化为天数
//也可以获得年数,月数etc.
Toast.makeText(this, "相差时间为:" + getDateCount("2106-05-27 12:00:00","2006-05-26 12:00:00")+"天",Toast.LENGTH_SHORT).show();
http://blog.csdn.net/u014388299/article/details/52389698
2017/7/14更新
设置时间选择器
- 获取系统时间
//获取系统时间并设置为时间选择器当前时间
final Calendar ca = Calendar.getInstance();
mYear = ca.get(Calendar.YEAR);
mMonth = ca.get(Calendar.MONTH);
mDay = ca.get(Calendar.DAY_OF_MONTH);
- 将系统时间赋给时间选择器
private DatePickerDialog.OnDateSetListener mdateListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
display();
}
};
- 点击显示时间的Textview的响应事件(弹出时间选择器并选择时间然后setText进TextView)
dateDisplay = (TextView) findViewById(R.id.textViewdate);
dateDisplay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(DATE_DIALOG);
}
});
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG:
return new DatePickerDialog(this, mdateListener, mYear, mMonth, mDay);
}
return null;
}
private DatePickerDialog.OnDateSetListener mdateListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
display();
}
};
/**
* 设置日期 利用StringBuffer追加
*/
public void display() {
dateDisplay.setText(new StringBuffer().append(mYear).append("-").append(mMonth + 1).append("-").append(mDay).append(" "));
}
- 这是设置系统时间进时间选择器的样式(API25)
-
不设置系统时间就会这样
获取当前时间就简单得多
上网查了一下,获取当前时间有两种主要的方法
- 第一种:获取距离1970-1-1日的 毫秒数,不过这个似乎还要具体到秒,软件中只需要计算天数,所以没考虑
- 第二种:分别获取当前系统时间的年月日,然后将它转化为String类型再拼成一个字符串来显示时间以及计算时差
//获取系统时间
final Calendar ca1 = Calendar.getInstance();
nYear=ca1.get(Calendar.YEAR);
nMonth = ca1.get(Calendar.MONTH);
nDay = ca1.get(Calendar.DAY_OF_MONTH);
//获取系统时间并组成字符串
Snyear = String.valueOf(nYear);
SnMonth = String.valueOf(nMonth+1);
Sndays = String.valueOf(nDay);
if(nMonth>=0 && nMonth <=8)
{
j =Snyear+"0"+SnMonth+Sndays;
}
else
{
j =Snyear+SnMonth+Sndays;
}
//Calendar获取的月份要+1
//如果月份是1-9之间的,那么就要在月份前面加一个0,便于之后计算时差
- 计算时差的code,因为天数只可能是整数,所以要将double转为int再转String去小数点
private String getDateCount(String beginTime,String endTime) {
String str1 = endTime; //"yyyyMMdd"格式 如 20131022
String str2 = beginTime; //"yyyyMMdd"格式 如 20131022
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");//输入日期的格式
Date date1 = null;
try {
date1 = simpleDateFormat.parse(str1);
} catch (ParseException e) {
e.printStackTrace();
}
Date date2 = null;
try {
date2 = simpleDateFormat.parse(str2);
} catch (ParseException e) {
e.printStackTrace();
}
GregorianCalendar cal1 = new GregorianCalendar();
GregorianCalendar cal2 = new GregorianCalendar();
cal1.setTime(date1);
cal2.setTime(date2);
double dayCount = (cal2.getTimeInMillis()-cal1.getTimeInMillis())/(1000*3600*24);//从间隔毫秒变成间隔天数
int mid = (int) dayCount;//double转int再转String去掉小数点
String days = String.valueOf(mid);
return days;
}
- 计算选定的日期与当前日期的天数差