(一)总览
编号 | 类的名称 | 描述 |
---|---|---|
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();