JDK8 日期类使用详解

目录

LocalDate、LocalDateTime、LocalTime

获取当前时间

设置指定的时间

获取年/月/日

设置时间/日期(绝对值)

设置偏移量

Instant

now()

添加偏移量(时区)

获取时间戳(从1970年1月1日0时0分0秒开始的毫秒数)

根据毫秒时间戳返回Instant对象

DateTimeFormatter

ofPattern

format格式化为字符串

parse解析为时间/日期

Period

Duration

计算日期绝对间隔

常用日期获取

所在月份天数

String、Date、LocaDate、LocalTime、LocalDateTime 相互转换

String 与 Date相互转换

String 与 LocaDate相互转换

String 与 LocaTime相互转换

String 与 LocalDateTime相互转换

Date 与 LocalDate相互转换

Date 与 LocalTime 转换

Date 与 LocalDateTime相互转换

LocalDate 与 LocalDateTime相互转换

LocalTime 与 LocalDateTime转换

LocalDateTime与Long转换


Java8 中吸收了Joda-Time的精华,以一个新的开始为Java创建优秀的API。新的java.time中包含了所有关于本地时间(LocalDate)、本地时间(LocalTIme)、本地日期时间(LocalDateTime)、时区(ZonedDateTime)和持续时间(Duration)的类。下面简单介绍其使用方法。

LocalDate、LocalDateTime、LocalTime

获取当前时间

//获取当前时间  now()/now(ZoneId zone) 
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();

输出:
2021-07-03
20:09:18.472
2021-07-03T20:09:18.472

设置指定的时间

//of(): 设置指定的年、月、日、时、分、秒。没有偏移量
LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 8, 1, 1, 1);
输出:
2020-10-08T01:01:01

//获取一天中小时间和最大时间
LocalDate localDate = LocalDate.now();
ystem.out.println(localDate);
LocalDateTime min = LocalDateTime.of(localDate, LocalTime.MIN);
System.out.println(min);
LocalDateTime max = LocalDateTime.of(localDate, LocalTime.MAX);
System.out.println(max);

输出:
2021-09-26
2021-09-26T00:00
2021-09-26T23:59:59.999999999

获取年/月/日

//getXxx()
System.out.println(localDateTime.getDayOfMonth());
System.out.println(localDateTime.getDayOfWeek());    //枚举
System.out.println(localDateTime.getMonth());        //枚举
System.out.println(localDateTime.getMonthValue());
System.out.println(localDateTime.getMinute());

输出:
3
SATURDAY
JULY
7
9

设置时间/日期(绝对值)

//设置时间/日期  withDayOfMonth()/withDayOfYear()/withMonth()/withYear()
LocalDate localDate1 = localDate.withDayOfMonth(5);  //设置为本月第5天
System.out.println(localDate);   // 不可变
System.out.println(localDate1);

输出:
2021-07-03
2021-07-05

设置偏移量

// 设置偏移量
LocalDateTime localDateTime3 = localDateTime.plusDays(3);
LocalDateTime localDateTime4 = localDateTime.minusDays(10);
System.out.println(localDateTime3);
System.out.println(localDateTime4);

输出:
2021-07-06T20:21:02.542
2021-06-23T20:21:02.542

Instant

时间线上的一个瞬时点,被用来记录应用程序中的事件时间戳。

now()

//日期变更子午线时间
Instant instant = Instant.now();
System.out.println(instant);
输出:
2021-07-03T12:21:02.543Z

添加偏移量(时区)

// 添加时间的偏移量--东八区时区
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime);
输出:
2021-07-03T20:21:02.543+08:00

获取时间戳(从1970年1月1日0时0分0秒开始的毫秒数)

long l = instant.toEpochMilli();
System.out.println(l);
输出:
1625314862543

根据毫秒时间戳返回Instant对象

Instant instant1 = Instant.ofEpochMilli(l);
System.out.println(instant1);

输出:
2021-07-03T12:21:02.543Z

DateTimeFormatter

ofPattern

静态方法,返回一个指定字符串格式的DateTimeFormatter
DateTimeFormatter dateTimeFormatter6 = DateTimeFormatter.ofPattern("yyyy-MM-dd");

format格式化为字符串

DateTimeFormatter dateTimeFormatter6 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String format6 = dateTimeFormatter6.format(LocalDate.now());
System.out.println(format6);
输出:
2021-07-03

时间戳转为字符串
DateTimeFormatter dateTimeFo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值