Java--Date、Calendar、SimpleDateFormat、System类
一、Date
- Date表示特定的瞬间,精确到毫秒
- Date类中的大部分方法都已经被Calendar类中的方法所取代
- 时间单位
- 1秒 = 1000毫秒
- 1毫秒 = 1000微妙
- 1微妙 = 1000纳秒
package com.monv.str; import java.util.Date; public class TestDate { public static void main(String[] args) { //1.创建Date对象 //今天 无参构造表示默认的日期 Date date1 =new Date();//用util包中的Date System.out.println(date1.toString());//结果不是我们常用的格式 System.out.println(date1.toLocaleString());//这个方法已经过时了 //昨天 带参构造Date(long date);表示1970.1.1以来的毫秒数 Date date2 = new Date(date1.getTime()-(60*60*24*1000)); System.out.println(date2.toLocaleString()); //2.方法 after before boolean b1 = date1.after(date2); System.out.println(b1); boolean b2 = date1.before(date2); System.out.println(b2); //比较compareTo(); 比较毫秒值 int d1 = date1.compareTo(date2); System.out.println(d1); //比较是否相等 equals() boolean b3 = date1.equals(date2); System.out.println(b3); } } -------------------------------- Thu Sep 10 14:06:22 CST 2020 2020-9-10 14:06:22 2020-9-9 14:06:22 true false 1 false
二、Calender
- Calender提供了获取或设置各种日历字段的方法
- protected Calendar()构造方法为protected修饰,无法直接创建该对象
- 其他方法(如下图)
package com.monv.str; import java.util.Calendar; public class TestCalender { public static void main(String[] args) { //创建Calender对象 Calendar calender = Calendar.getInstance();//因为是被保护的 不能创建对象 所以用Calendar的getInstance()静态方法创建 System.out.println(calender.getTime().toLocaleString());//2020-9-10 17:54:01 System.out.println(calender.getTimeInMillis());//1599731641181 返回毫秒数(1970年到现在) //2.获取时间信息 //获取年 int year = calender.get(calender.YEAR); //月 返回值是从0-11 int month = calender.get(calender.MONTH); //日 int day = calender.get(calender.DAY_OF_MONTH);//Date 或 DAY_OF_MONTH都可以 //小时 int hour = calender.get(calender.HOUR_OF_DAY);//HOUR 12小时 HOUR_OF_DAY 24小时 //分钟 int minute = calender.get(calender.MINUTE); //秒 int second = calender.get(calender.SECOND); //打印 System.out.println(year+"年"+(month+1)+"月"+" "+day+"日"+hour+":"+minute+":"+second);//2020年9月 10日17:55:11 //3.修改时间 Calendar calender2 = calender.getInstance(); calender2.set(calender.DAY_OF_MONTH,9);//指定到某一天 9指定到9号 System.out.println(calender2.getTime().toLocaleString());//2020-9-9 17:55:11 //4.add修改时间 //增一个小时 (正:增加小时,负:减少小时) calender2.add(calender2.HOUR, 1); System.out.println(calender2.getTime().toLocaleString());//2020-9-9 18:55:11(增加1个小时) //5.补充方法 获取月的最大日期和最小日期 int max = calender2.getActualMaximum(calender.DAY_OF_MONTH); int min = calender2.getActualMinimum(calender.DAY_OF_MONTH); System.out.println("最大日期"+max);//最大日期30 System.out.println("最小日期"+min);//最小日期1 } }
三、SimpleDateFormat
- SimpleDateFormat是以与语言环境有关的方式来格式化和解析日期的类
- 进行格式化(日期-->文本)、解析(文本-->日期)
- 常用的时间模式字母
package com.monv.chapter; import java.text.SimpleDateFormat; import java.util.Date; public class Demo3 { public static void main(String[] args) throws Exception{ //1.创建SimpleDateFormat对象 y:年 M:月 d:日 H:时 m:分 s:秒 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//格式化的形式 //2.创建Date Date d1 = new Date(); //3.格式化日期 把d1转换为字符串 String str1 = sdf1.format(d1); System.out.println(str1); //4.解析 把字符串转换为日期 String str2 = "1990/9/20 10:10:20";//注意:字符串的格式要与 sdf1的格式一致 否则会报错 Date d2 = sdf1.parse(str2); System.out.println(d2.toLocaleString()); } }
四、System类
- System系统类,主要用于获取系统的属性数据和其他操作,构造方法是私有的。在用的时候不需要创建对象,直接用system.就可以了
package com.monv.chapter; public class Demo4 { public static void main(String[] args) { //1.arraycopy() 复制数组 //参数说明:src:源数据,srcPos:从源数组哪个位置开始 //dest:目标数组,destPos:从目标数组的哪个位置开始放 length:复制的长度 int[] arr1 = {10,23,25,69,48,74}; int[] arr2 = new int[6]; System.arraycopy(arr1, 0, arr2, 0,arr1.length); for (int i = 0;i<arr2.length;i++) { System.out.println(arr2[i]); } //2.currentTimeMillis();获取1970/1/1距今的毫秒值 可以用来计时 long start = System.currentTimeMillis();//记下开始时间 //来写一个循环 for (int i = 0 ;i<99999;i++) { for (int j = 0;j<99999;j++) { int k = i+j; } } long end = System.currentTimeMillis();//记下结束时间 System.out.println("用时:"+(end-start));//结束时间-开始时间 = 用时 //3.gc();通知垃圾回收器回收垃圾 Student s1 = new Student("aaa",20);//被用着 没有回收 Student s2 = new Student("bbb", 21);//被用着 没有回收 new Student("ccc", 22);//回收了 new Student("ddd", 23);//回收了 System.gc(); //4.exit();退出jvm 0 正常退出,非0,异常退出 System.exit(0); System.out.println("程序退出了。。。");//上一句执行了退出,所以之后的代码都不会执行 } }
输出是最好的输入。把学习的内容输出出来,加深记忆;