第一次写博客,开始将自己平时工作中运用到的一些关于Java和android的只是做一些总结,今天要写的是将时间的格式进行转换,然后和系统时间做比较,判断时间的先后顺序。
一 将String格式为“YYYY-MM-DD”的时间转化为date:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(validate);
} catch (ParseException e) {
e.printStackTrace();
}
使用SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");可以转化很多格式,只要把"yyyy-MM-dd"改成你的格式,例如“yyyy.MM.dd”,“yyyy年MM月dd日”等等
二 将日期做比较:
比较日期的先后顺序的方法有很多,我这里是把日期用getTimeInMillis()转换成秒后,来比较大小,这样做可以比较精确的计算出两个时间相隔的大小,能够简单计算间隔几天
下面例子是将自定义的时间与系统的时间做比较,判断是否过期,是否在30天以内。 先将“2015-2-15”转化成date,然后将date转化成calender,再转化成秒,然后和系统 的时间做比较,期间还判断了是够相差30天以内(a*a1表示30天差距),这边注意一下使用calendar.getTimeInMillis()时的类型是lang不能用int。
</pre><pre name="code" class="java">package text;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Comparedate {
private static Calendar todaycalendar = Calendar.getInstance();
public static void main(String[] args) {
String validate = "2015-2-15";
System.out.println("证件是否过期" + date2(validate));
}
public static String date2(String validate) {
todaycalendar.set(Calendar.HOUR_OF_DAY, 0);
todaycalendar.set(Calendar.MINUTE, 0);
todaycalendar.set(Calendar.SECOND, 0);
todaycalendar.set(Calendar.MILLISECOND, 0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(validate);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
long date1 = calendar.getTimeInMillis();
long date2 = todaycalendar.getTimeInMillis();
long a = 30;
long a1 = 60 * 60 * 1000 * 24;
/*System.out.println(a * a1);
System.out.println(date1 - date2);*/
if (date1 < date2) {
return "1";
// 已经过期的
}
if ((date1 - date2) < a * a1) {
return "2";
// 到期日在30天以内的
}
return "3";
}
}