JDk新日期类的使用

# 1 jdk新日期类

* LocalDate , LocalTime , LocalDateTime  

* DateTimeFormatter
* Period , Duration , ChronoUnit
* ZoneId
* Instant, ZoneDateTime (新老日期转化)

 

## 1.1 新日期的创建

* LocalDate , LocalTime , LocalDateTime   表示日期时间

```java
LocalDateTime.now();  //获得当前系统时间的日期对象
LocalDateTime.of(); //获得指定时间的日期对象
```

 

## 1.2 获得日期信息

```java
LocalDateTime today = LocalDateTime.now();
today.get系列(); //获得不同的日期项
```

 

## 1.3 日期格式处理

```java
//LocalDateTime默认的日期格式  yyyy-MM-ddTHH:mm:ss
LocalDateTime day = LocalDateTime.parse("1982/02/23 03:03:03");
System.out.println(day);


DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime day2 = LocalDateTime.parse("1982/02/23 03:03:03",format);
System.out.println( day2.format(format) );
```

 

## 1.4 日期的计算

**一个日期加减数字**

```java
LocalDate day = LocalDate.of(1987, 2, 23);
//        LocalDate r = day.plus(3, ChronoUnit.DAYS);
//        LocalDate r = day.plusDays(10);
LocalDate r = day.minus(1,ChronoUnit.MONTHS);
System.out.println(r);

Period p = Period.of(0, 1, 15);
LocalDate r = day.plus(p);
```

 

**两个日期间隔**

```java
//间隔时间较长, 以年月日为间隔单位
LocalDate today = LocalDate.now();
LocalDate birthday = LocalDate.of(1987,2,23);

Period p = Period.between(birthday,today);
System.out.println(p);
System.out.println(p.getYears());

long days = ChronoUnit.YEARS.between(birthday, today);
System.out.println(days);
```

 

```java
//间隔时间较短,以时分秒为单位
LocalDateTime today = LocalDateTime.now();
LocalDateTime birthday = LocalDateTime.of(1987,2,23,3,3,3);

Duration between = Duration.between(birthday, today);
System.out.println(between.toDays());
```

 

 

## 1.5 新老日期类转化

* 需要Instant , ZoneDateTime , ZoneId 配合完成

```java
//Date ---> LocalDateTime
Date date = new Date();

Instant instant = date.toInstant();
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault());

LocalDateTime day = zonedDateTime.toLocalDateTime();
System.out.println(day);
```

```java
//LocalDateTime ---> Date
LocalDateTime birthday = LocalDateTime.of(1987, 2, 23, 3, 3, 3);

ZonedDateTime zonedDateTime = birthday.atZone(ZoneId.systemDefault());
Instant instant = zonedDateTime.toInstant();

Date date = Date.from(instant);
System.out.println(date);
`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值