Java8新特新之时间

Posted 暴躁的程序猿啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java8新特新之时间相关的知识,希望对你有一定的参考价值。

JAVA8新特性

时间

LocalDate LocalTime LocalDateTime是不可变对象 使用ISO-8601日历系统

ISO-8601是国际标准化组织制定的现代公民的日期和时间的表示法

获取当前时间日期

public class TestLocalDateTime {
    //1.localDate 日期   LocalTime时间   LocalDateTime日期和时间
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);
    }
}

输出

2021-08-14T14:55:43.503

指定日期时间

LocalDateTime of = LocalDateTime.of(2021, 8, 14, 14, 56, 40);
System.out.println(of);

输出

2021-08-14T14:56:40

当前日期加上一个月

LocalDateTime months = now.plusMonths(1);
System.out.println(months);

输出

2021-09-14T14:58:17.312

当前日期减去五天

//减5天
LocalDateTime localDateTime = now.minusDays(5);
System.out.println(localDateTime);

输出

2021-08-09T14:59:43.950

获取年月日时分秒

//获取年月日时分秒
System.out.println(localDateTime);
System.out.println(now.getYear());
System.out.println(now.getMonth().getValue());
System.out.println(now.getDayOfMonth());
System.out.println(now.getHour());
System.out.println(now.getMinute());
System.out.println(now.getSecond());
输出
2021
8
14
15
5
35

Instant :时间戳(以Unix元年:1970年1月1日0时0分0秒 到 当某个时间的毫秒值)

 public class InstantTest {
        public static void main(String[] args) {
            //获取时间戳
            Instant now = Instant.now();
            System.out.println(now);
        }
    }

输出

2021-08-14T07:10:30.049Z

默认获取的是UTC时区的时间 跟当前时间不符

//偏移八个时区的时间
OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime);

输出

2021-08-14T15:48:29.674+08:00 就是当前时间

//在1970年1月1日0时0分0秒 的基础上加上60秒
Instant instant = Instant.ofEpochSecond(60);
System.out.println(instant);

输出 过了一分钟

1970-01-01T00:01:00Z

Period:计算两个日期之间的间隔

LocalDate now = LocalDate.now();
LocalDate of = LocalDate.of(2021, 9, 1);
Period between = Period.between(now, of);
System.out.println(between);

输出

P18D

Duration : 计算两个时间之间的间隔

public class Interval {
    public static void main(String[] args) throws InterruptedException {
        Instant now1 = Instant.now();
        Thread.sleep(100);
        Instant now2 = Instant.now();
        System.out.println(Duration.between(now1, now2));
    }
}

输出

PT0.1S

以上是关于Java8新特新之时间的主要内容,如果未能解决你的问题,请参考以下文章

java8新特性学习六(新时间日期API)

java8新特性学习

java8新特新

java8新特性学习

Java 8系列全网最通俗易懂的Java8版本新特性知识汇总,看完不懂你捶我

Java 8系列全网最通俗易懂的Java8版本新特性知识汇总,看完不懂你捶我