LocalDate | 本地日期 |
---|
LocalTime | 本地日期 |
LocalDateTime | 本地日期+时间 |
Instant | 时间戳,适合机器时间计算 |
Duration | 时间差 |
Period | 年、月、日差 |
ZoneOffset | 时区偏移量 |
ZonedDateTime | 带时区的日期时间 |
Clock | 时钟,获取其他地区时钟 |
DateTimeFormatter | 时间格式化 |
Temporal | 日期-时间获取值的字段 |
TemporalAdjuster | emporal 对象转换,实现自定义 |
ChronoLocalDate | 日历系统接口 |
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
public class DateTime {
public static void main(String[] args) {
//1、 获取当前日期
LocalDate.now();
//2、创建日期
LocalDate date = LocalDate.of(2021, 5, 20);
//3、获取年份
date.getYear();
//通过 TemporalField 接口的实现枚举类 ChronoField.YEAR 获取年份
date.get(ChronoField.YEAR);
//4、获取月份
date.getMonth().getValue();
//通过 TemporalField 接口的实现枚举类 ChronoField.MONTH_OF_YEAR 获取月份
date.get(ChronoField.MONTH_OF_YEAR);
//5、获取日
date.getDayOfMonth();
//通过 TemporalField 接口的实现枚举类 ChronoField.DAY_OF_MONTH 获取日
date.get(ChronoField.DAY_OF_MONTH);
//6、获取周几
date.getDayOfWeek();
//7、获取当前月多少天
date.lengthOfMonth();
//8、获取当前年是否为闰年
date.isLeapYear();
//9、当前时间
LocalTime nowTime = LocalTime.now();
//10、创建时间
LocalTime.of(23, 59, 59);
//11、获取当前小时
nowTime.getHour();
//12、获取分
nowTime.getMinute();
//13、获取秒
nowTime.getSecond();
//14、获取毫秒
nowTime.getLong(ChronoField.MILLI_OF_SECOND);
//15、获取纳秒
nowTime.getNano();
//16、创建日期时间对象
LocalDateTime.of(2020, 9, 21, 1, 2, 3);
LocalDateTime.of(date, nowTime);
//17、获取当前日期时间对象
LocalDateTime.now();
//18、通过 LocalDate 创建日期时间对象
date.atTime(1, 2, 3);
//19、通过 LocalTime 创建日期时间对象
nowTime.atDate(date);
//20、通过 LocalDateTime 获取 LocalDate 对象
LocalDateTime.now().toLocalDate();
//21、通过 LocalDateTime 获取 LocalTime 对象
LocalDateTime.now().toLocalTime();
//22、解析日期字符串
LocalDate.parse("2021-05-20");
//23、解析时间字符串
LocalTime.parse("12:12:12");
//24、解析日期时间字符串
LocalDateTime.parse("2021-05-20T12:12:12", DateTimeFormatter.ISO_LOCAL_DATE_TIME);
//25、方便时间建模、机器处理的时间处理类 Instant,起始时间 1970-01-01 00:00:00
//起始时间 + 3 秒
Instant.ofEpochSecond(3);
//起始时间 + 3 秒 + 100 万纳秒
Instant.ofEpochSecond(3, 1_000_000_000);
//起始时间 + 3 秒 - 100 万纳秒
Instant.ofEpochSecond(3, -1_000_000_000);
//距离 1970-01-01 00:00:00 毫秒数
Instant.now().toEpochMilli();
//26、Duration:LocalTime、LocalDateTime、Intant 的时间差处理
Duration.between(LocalTime.parse("12:12:12"), LocalTime.parse("12:12:12"));
Duration.between(LocalDateTime.parse("2021-05-20T12:12:12"), LocalDateTime.parse("2021-05-20T12:12:12"));
Duration.between(Instant.ofEpochMilli(1600623455080L), Instant.now());
//27、日期时间,前、后、相等比较
//2021-05-20 在 2021-05-10 前?
LocalDate.parse("2021-05-20").isBefore(LocalDate.parse("2021-05-10"));
//12:12:12 在 12:12:10 后?
LocalTime.parse("12:12:12").isAfter(LocalTime.parse("12:12:10"));
//28、修改日期、时间对象,返回副本
//修改日期返回副本
LocalDate.now().withYear(2021).withMonth(5).withDayOfMonth(20);
LocalDate date4Cal = LocalDate.now();
//加一周
date4Cal.plusWeeks(1);
//减两个月
date4Cal.minusMonths(2);
//减三年
date4Cal.minusYears(3);
//29、格式化
//格式化当前日期
LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE);
//指定格式,格式化当前日期
LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
//指定格式,格式化当前日期时间
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd HH:mm:ss"));
//30、解析
//日期解析
LocalDate.parse("2021-05-20");
//指定格式,日期解析
LocalDate.parse("2021/05/20", DateTimeFormatter.ofPattern("yyyy/MM/dd"));
//指定格式,日期时间解析
LocalDateTime.parse("2021/05/20 12:12:12", DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));
//31、时区
//上海时区
ZoneId shanghaiZone = ZoneId.of("Asia/Shanghai");
//设置日期为上海时区
LocalDate.now().atStartOfDay(shanghaiZone);
//设置日期时间为上海时区
LocalDateTime.now().atZone(shanghaiZone);
//设置 Instant 为上海时区
Instant.now().atZone(shanghaiZone);
//32、子午线时间差
//时间差减 1 小时
ZoneOffset offset = ZoneOffset.of("-01:00");
//设置时间差
OffsetDateTime.of(LocalDateTime.now(), offset);
}
}