一、JDK8之前的日期和时间的API
1.System类中的currentTimeMillis()
返回当前时间与1970年1月1日0分0秒之间以毫秒为单位的时间差,称为时间戳
2.Java.util.Date类 |---java.sql.Date类
1.两个构造器的使用
>构造器一: Date(): 创建一个对应当前时间的Date对象
>构造器二:创建指定毫秒数的Date对象
2.两个方法的使用
>toString(): 显示当前的年、月、日、时、分、秒
> getTime(): 获取当前Date对象对应的毫秒数(时间戳)
3.java.sql.Date对应着数据库中的日期类型的变量
>如何实例化
>如何将java.util.Date对象转换为java.sql.Date对象
3.SimpleDateFormat的使用: simpleDateFormat对日期Date类的格式化和解析
1.两个操作:
>格式化:日期 --->字符串
>解析:格式化的逆过程,字符串 ---> 日期
4.Calendar日历类(抽象类)的使用
1.实例化
方式一:创建其子类 (GregorianCalendar) 的对象
方式二:调用其静态方法getInstance()
Calendar calendar = Calendar.getInstance(); System.out.println(calendar.getClass());
2.常用方法
getTime(): 日历类---> Date
Date date = calendar.getTime();
System.out.println(date);
setTime():Date ---> 日历类
Date date1 = new Date();
calendar.setTime(date1);
days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days);
二、JDK8中的日期和时间的API
1.出现的背景
2.LocalDate、LocalTime、LocalDateTime 的使用:
1.LocaLDateTime相较FLocalDate、LocalTime,使用频率要高
2.类似于Calendar
//now(): 获取当的日期、时间、日期+时间
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
//of(): 设置指定的年、月、日、时、分、秒。没有偏移量
LocalDateTime localDateTime1 = LocalDateTime.of( year: 2020, month: 10, dayOfMonth: 22)
System.out.println(localDateTime1);
//getXxx(): 获取相关的属性
System.out.printIn(localDateTime.getDayofMonth());
System.out.printIn(localDateTime.getDayofWeek());
System.out.printIn(localDateTime.getMonth());
System.out.printIn(localDateTime.getMonthValue());
System.out.println(localDateTime.getMinute());
//体现不可变性
//withXxx(): 设置相关的属性
LocalDate localDate1 = localDate.withDayofMonth(22);
System.out.printIn(localDate);
System.out.println(localDate1);
LocalDateTime localDateTime2 = localDateTime.withHour(4);
System.out.printIn(localDateTime);
System.out.printIn(localDateTime2);
//不可变性
LocalDateTime localDateTime3 = locaDateTime.plusMonths(3);
System.out.println(localDateTime);
System.out.println(localDateTime3);
3.Instant类的使用
Instant: 时间线上的一个瞬时点。 这可能被用来记录应用程序中的事件时间戳。
类似于Java.Util.Date类
//now(): 获取本初子午线对应的标准时间
Instant instant = Instant .now();
System.out.println(instant);//2019-02-18T7:29:41.719Z
//添加时间的偏移量
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
System,out.println(offsetDateTime);//2019-02-18T15:32:50.611+08:00
//toEpochMilli(): 获取自197年1月1时分秒(UTC)开始的毫秒数---> Date类的getTime
long milli = instant.toEpochMilli();
System.out.println(milli);
//ofEpochMilLi():通过给定的毫秒数,获取Instant实例 -->Date(Long millis)
Instant instant1 = Instant.ofEpochMilli(1550475314878L);
System.out.println(instant1);
4.DateTimeFormatter的使用:格式化或解析日期、时间
重点: 方式三:自定义的格式。如: ofPattern(“yyyy-MM-dd hh:mm:ss”)
DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss")
//格式化
String str4 = formatter3.format(LocalDateTime.now());
System.out.println(str4);//2919-02-18 3:52:09
5.其他日期API