4、Date类 & Calendar类及其常用的方法总结
学习来源:https://www.runoob.com/java/java-date-time.html
Date类
java.util.Date包内提供了操作日期的方法。
初始化的方式
Date date = new Date(); Date date2 = new Date(1000); System.out.println("date1:" + date); //date1:Thu Nov 05 13:52:34 CST 2020 System.out.println("date2:" + date2); //date2:Thu Jan 01 08:00:01 CST 1970 该参数是从1970年1月1日起的毫秒数
常用的方法:
Date date = new Date(); //date1:Thu Nov 05 13:52:34 CST 2020 Date date2 = new Date(1000); //date2:Thu Jan 01 08:00:01 CST 1970 boolean res1 = date.before(date2); //date是否在date2之后,是则返回true,否则返回false false boolean res2 = date.after(date2); //date是否在date2之前.是则返回true,否则返回false true long time = date.getTime(); //从1970年1月1日 00:00:00开始计数 date.setTime(1000); //从1970年1月1日 00:00:00开始累加
比较时间的大小
- 使用 getTime() 方法获取两个日期的毫秒值,然后比较这两个值
- 使用方法 before(),after() 和 equals()
- 使用 compareTo() 方法
public static void compareTime(){ Date date1 = new Date(); //当前时间 Date date2 = new Date(1000); //Thu Jan 01 08:00:01 CST 1970 { long time1 = date1.getTime(); long time2 = date2.getTime(); boolean res = time1 > time2 ? true : false; System.out.println(res); // true } { //Date类实现了Comparable接口 int res = date1.compareTo(date2); //date1 > date2 返回1 System.out.println(res); // 1 } }
集合中的时间排序:
/** * 给集合中的时间升序排序 * @param list */ public static void compareList(List<Date> list){ Collections.sort(list, new Comparator<Date>() { @Override public int compare(Date date, Date t1) { if(date.getTime() > t1.getTime()){ return 1; }else if(date.getTime() < t1.getTime()){ return -1; }else { return 0; } } }); }
格式化日期
SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行
Date date = new Date();
SimpleDateFormat format_1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat format_2 = new SimpleDateFormat("yyyy:MM:dd hh:mm");
SimpleDateFormat format_3 = new SimpleDateFormat("MM-dd hh");
SimpleDateFormat format_4 = new SimpleDateFormat("yyyy/MM hh:mm");
SimpleDateFormat format_5 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");
System.out.println(format_1.format(date)); //2020-11-05 03:18:07
System.out.println(format_2.format(date)); //2020:11:05 03:18
System.out.println(format_3.format(date)); //11-05 03
System.out.println(format_4.format(date)); //2020/11 03:18
System.out.println(format_5.format(date)); //2020年11月05日 03时24分37秒
解析字符串为时间
try{ String str = "1998-10-11 00:00:00"; Date t = format_1.parse(str); }catch (ParseException v){ v.getMessage(); }
获取当前时间的方法
long t1 = System.currentTimeMillis(); long t2 = new Date().getTime(); boolean res = t1 == t2 ? true : false; //true
Calendar类
Calendar类可以获取日期中特定的数据,如日、小时、分钟,还能实现日期的加减时间。
Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。
获取Calendar类的实例:
Calendar c = Calendar.getInstance();
常用方法:
public class TestCalendar { public static void main(String[] args) { Calendar c = Calendar.getInstance(); //设置确定的时间 c.set(1998,10,11); //设置时间为1998年10月11日 Date t = c.getTime(); //只设定某个确定的时间 c.set(Calendar.YEAR,1998); c.set(Calendar.MONTH,10); c.set(Calendar.DATE,11); c.set(Calendar.HOUR,10); //时间的加减 c.add(Calendar.DATE, 10); // 把c对象的日期加上10,也就是c也就表示为10天后的日期,其它所有的数值会被重新计算 c.add(Calendar.DATE, -10); //把c对象的日期减去10,也就是c也就表示为10天前的日期,其它所有的数值会被重新计算 //获取时间 int year = c.get(Calendar.YEAR); // 获得年份 int month = c.get(Calendar.MONTH) + 1; // 获得月份 int date = c.get(Calendar.DATE); // 获得日期 int hour = c.get(Calendar.HOUR_OF_DAY); // 获得小时 int minute = c.get(Calendar.MINUTE); // 获得分钟 int second = c.get(Calendar.SECOND); // 获得秒 int day = c.get(Calendar.DAY_OF_WEEK); // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推) } }