Java8 日期时间新API

package com.xbb.java.time;


import java.time.*;
import java.time.temporal.ChronoUnit;
import java.util.function.BiFunction;

/**
 * LocalDate : 日期
 * LocalTime : 时间
 * LocalDateTime : 日期+时间
 *
 *  以上三个类分别都为不可改对象.分别表示使用ISO-8601日历系统的日期,时间.日期和时间.
 *  它们提供了简单的日期或时间.并不包含当前的时间信息.也不包含时区相关的信息.
 *
 * 工具类:
 * duration : 计算两个时间之间的间隔
 * period   : 计算两个日期之间的间隔
 *
 */

public class Local_Demo {

    public static void main(String[] args)  throws Exception{
//        localDateTimeForRobot_Demo();
        //localDateTimeForPerson_Demo();
        duration_Demo();
        period_Demo();
    }

    /**
     *
     * 机器所识别的
     * Instant : 时间戳(以Unit元年19700101000000 -> 到某个时间之间的毫秒值)
     */
    public static void localDateTimeForRobot_Demo(){
        // 获取以UTC时区为基础,所以这个时间是美国时间.本初子午线时间.
        Instant instant1 = Instant.now();
        System.out.println(instant1);

        // 如果要获取本地时间.需要使用偏移量
        OffsetDateTime zdt = instant1.atOffset(ZoneOffset.ofHours(8));
        System.out.println(zdt);

        // 获取毫秒时间
        System.out.println(instant1.toEpochMilli());
    }

    /**
     *
     * 人所识别的
     * LocalDate,
     * LocalTime,
     * LocalDateTime
     */
    public static void localDateTimeForPerson_Demo(){
        // 获取当前日期
        LocalDate date = LocalDate.now();
        System.out.println(date);

        LocalTime time = LocalTime.now();
        System.out.println(time);
        // 获取当前日期时间
        LocalDateTime dateTime = LocalDateTime.now();
        System.out.println(dateTime);

        // 获取指定日期时间
        LocalDateTime dt = LocalDateTime.of(2019,02,22,13,22,44);
        System.out.println(dt);

        // 年 + 2年
        LocalDateTime dateTime1 = LocalDateTime.now().plusYears(2);
        System.out.println(dateTime1);

        // 月 - 2月
        LocalDateTime dateTime2 = LocalDateTime.now().minusMonths(2);
        System.out.println(dateTime2);

        // 获取年月日单独信息
        System.out.println("年 : " + dateTime.getYear());
        System.out.println("月 : " + dateTime.getMonthValue());
        System.out.println("日 : " + dateTime.getDayOfMonth());

    }

    /**
     *  duration : 计算两个时间之间的间隔
     */
    public static void duration_Demo() throws Exception{
        // 计算两个时间戳之间的间隔
        Instant inst1 = Instant.now();
        Thread.sleep(3000);
        Instant inst2 = Instant.now().plus(2, ChronoUnit.DAYS);
        BiFunction<Instant,Instant,Duration> supplier = (x, y)->Duration.between(x,y);
        System.out.println(supplier.apply(inst1,inst2).toDays());
    }

    /**
     *  period   : 计算两个日期之间的间隔
     */
    public static void period_Demo() throws Exception{
        LocalDate localDate1 = LocalDate.now();
        LocalDate localDate2 = LocalDate.now().plusDays(3);
        BiFunction<LocalDate,LocalDate,Period> function = (x,y)->Period.between(x,y);
        System.out.println(function.apply(localDate1,localDate2).getDays());

        // 计算两个日期之间的差距
        LocalDate localDate3 = LocalDate.of(1991,05,16);
        System.out.println(Period.between(localDate1,localDate3));
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值