(一)总览

编号 类的名称 描述
1 Instant 时间戳
2 Duration 持续时间,时间差
3 LocalDate 只包含日期,比如:2018-02-05
4 LocalTime 只包含时间,比如: 23:12:10
5 LocalDateTime 包含日期和时间,比如 2018-02-05 23:14:21
6 Period 时间段
7 ZoneOffset 时间偏移量,比如: +8:00
8 ZonedDateTime 带时区的时间
9 Clock 时钟,比如获取目前美国纽约的时间
10 java.time.format.DateTimeFormatter 时间格式化





(二)YYYY-MM-DD的黑锅


使用是时候尽量使用yyyy 和 dd ,
不要使用YYYY和DD
大写的DD代表的是处于这一年中那一天,不是处于这个月的那一天。

2019-12-31 转 YYYY/MM/dd 格式: 2020/12/31 — 这个是错的

详细介绍:

https://www.yuque.com/docs/share/81615cf0-6fd0-47cb-a737-8a6dc7195a64?#


 //*


(一)只获取年月日


//获取当前年月日
LocalDate localDate = LocalDate.now();//2020-01-16

指定年月日

获取指定的年月日
LocalDate localDate1 = LocalDate.of(2019, 9, 10);//2019-09-10

分别获取年月日星期

| LocalDate localDate = LocalDate.now();
//获取当前是哪一年 int year = localDate.getYear();//2020
int year1 = localDate.get(ChronoField.YEAR);//2020
//获取当前是几月 Month month = localDate.getMonth();//JANUARY (一月的意思)
int month1 = localDate.get(ChronoField.MONTH_OF_YEAR);//1
//获取当前是几日 int day = localDate.getDayOfMonth();//16
int day1 = localDate.get(ChronoField.DAY_OF_MONTH); //16
//获取星期几 DayOfWeek dayOfWeek = localDate.getDayOfWeek();//THURSDAY 星期四的意思 //获取星期几 int dayOfWeek1 = localDate.get(ChronoField.DAY_OF_WEEK);//4 | | —- |

(二)分别获取几点几分几秒

| LocalTime localTime = LocalTime.now();//23:29:23.232
//获取小时 int hour = localTime.getHour();//23
int hour1 = localTime.get(ChronoField.HOUR_OF_DAY); //23
//获取分 int minute = localTime.getMinute(); //30
int minute1 = localTime.get(ChronoField.MINUTE_OF_HOUR); //30
//获取秒 int second = localTime.getSecond(); //3
int second1 = localTime.get(ChronoField.SECOND_OF_MINUTE); // 3 | | —- |


(三)获取年月日时分秒

(四)获取指定年月日时分秒(自定义格式化)


| @Test
public void c指定年月日时分秒获取时间() {
//指定年月日获取时间 LocalDateTime of = LocalDateTime._of
(2016, 11, 21, 10, 10, 10);
System.out.println(of.getYear() + “年” + of.getMonthValue() + “月” + of.getDayOfMonth() + “日” +
of.getHour() + “时” + of.getMinute() + “分钟” + of.getSecond() + “秒”);
// 2016年11月21日10时10分钟10秒
LocalDateTime now = LocalDateTime.now();
System.out.println(now.getYear() + “年” + now.getMonthValue() + “月” + now.getDayOfMonth() + “日” +
now.getHour() + “时” + now.getMinute() + “分钟” + now.getSecond() + “秒”);
//获取当前年月日时分秒
} | | —- |


(五)Java8一般的方法前缀


of:静态工厂方法,用于创建实例
now:静态工厂方法,用当前时间创建实例
parse:静态工厂方法,从字符串解析得到对象实例
get:获取时间日期对象的部分状态。
is:检查某些东西的是否是 true,例如比较时间前后
with:返回一个部分状态改变了的时间日期对象拷贝
plus:返回一个时间增加了的、时间日期对象拷贝
minus:返回一个时间减少了的、时间日期对象拷贝
to:转换到另一个类型
at:把这个对象与另一个对象组合起来,例如 date.atTime(time)
format:提供格式化时间日期对象的能力


(六)检查是否是闰年[没测试是否正确]


LocalDate now = LocalDate.now();

boolean leapYear = now.isLeapYear();