时间类

时间类

System.currentTimeMillis(); 获取当前的毫秒时间戳
从1970 1月1日0时0分0秒开始计算的
Date类
有两个 java.util.Date 还有一个 java.sql.Date

java.util.Date

常用构造器 无参 获取当前的时间
有参 传入时间戳 根据时间戳显示当前时间
java.sql.Date 下的 创建需要传入时间戳 他只显示年月日
java.sql.Date date4 =new java.sql.Date(date2.getTime());
java.sql.Date 是java.util.Date的子类
java.sql.Date转成 java.util.Date 可以直接接受
java.util.Date 转成 java.sql.Date
总结一下 java.sql.Date 和java.util.Date
互相转换最终都是通过 getTime 获取时间戳 然后通过两个类的
构造器进行转换
为什么他们两个都有getTime() 方法 因为util下的Date有 sql下的Date是他的子类
java.util.Date date = new java.util.Date();
转换
java.sql.Date date1 = new java.sql.Date(date.getTime())
转回来
java.util.Date date2 = new java.util.Date(date1.getTime())
如果你直接使用父类和子类的多态关系接收
因为java.sql.Date 下的只显示 年月日 直接转成java.util.Date下没有时间显示

Date date = new Date();
System.out.println(date);
//getTime 获取时间戳
System.out.println(date.getTime());
Date date2 = new Date(date.getTime());
System.out.println(date2);
/*
 * java.sql.Date
 * 
 * 
 * */
Date date3 = new java.sql.Date(date2.getTime());
System.out.println(date3);
java.sql.Date date4 =new java.sql.Date(date2.getTime());
System.out.println(date4);
/*
 * 以下属于过时的API不建议使用
 * 
 * */
//获取天 星期几
System.out.println(date.getDay());
//获取小时
System.out.println(date.getHours());
//获取分钟
System.out.println(date.getMinutes());
//获取秒数
System.out.println(date.getSeconds());
//获取日期
System.out.println(date.getDate());
//java.sql.Date date2 = new java.sql.Date();

DateFormat 抽象类 我们只能去实例化他的子类
SimpleDateFormat 是DateFormat的子类
转换方法
format(date) 将时间转成 字符串显示
parse(string) 将字符串转成时间 Date
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
使用有参构造的时候注意 转换的格式一定要对应上 不然会报错
日期转成字符串format(date)
字符串转成日期 parse(string)

//使用他的有参构造  yyyy-MM-dd hh:mm:ss// 2022-04-20 10:41:58
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = new Date();
System.out.println(simpleDateFormat.format(date));

Calendar 日历
GregorianCalendar日历 是Calendar的子类、
Calendar是一个抽象类 他不能被实例化
1 通过他的静态方法getInstance()
2 创建他的子类对象
get方法获取 如果你要获取那些信息就用Calendar类去点出来

Calendar calendar2 = new GregorianCalendar();
//常用方法
//get  获取星期几是以星期天为1开始的
//获取星期几
calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
//获取这个月的多少天
System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); 
calendar.get(Calendar.DAY_OF_MONTH);//获取这个月的第几天
//set 改变
//改变和获取是一样的 但是通过Calendar点出相应的属性
calendar.set(Calendar.DAY_OF_MONTH, 27);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
//add() 增加的意思  如果为负数就是减少的意思
calendar.add(Calendar.DAY_OF_MONTH, -2);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));

now():获取当前时间、日期
of():获取指定的日期、时间 他是有返回值的 而不是改变自身
getXxx():获取值
withXxx():设置值
plusXxx():加
minusXxx():减
这几个的好处是都不会改变自己 所有的api都是有返回值的

LocalDateTime localDateTime2 =  localDateTime.of(2022, 10, 2, 15, 13);
System.out.println(localDate);
System.out.println(localDateTime);
System.out.println(localTime);
System.out.println(localDateTime2);
localDateTime.getMonth();
System.out.println(localDateTime.getMonth());
System.out.println(localDateTime.getMonthValue());