• JDK8 之时间日期组件优化:【LocalDateTime,LocalDate,LocalTime,Peroid,Duration,DateTimeFormatter】


    /**
     * java8之前:
     * Date:表示时间和日期,不支持时间日期运算,不支持国际化
     * Calendar:表示时间和日期,支持时间和日期操作,但是不支持格式化
     * SimpleDateFormatte:仅能格式化Date
     *
     * java8:兼容旧版Date
     * LocalDateTime:日期和时间
     * LocalDate:仅表示日期
     * LocalTime:仅表示时间
     * Peroid:仅表示日期间隔
     * Duration:时间间隔,以秒和纳秒为单位
     * DateTimeFormatter:可以格式化LocalDate,LocalTime以及LocalDateTime
     */

    使用实例

    // 获取当前时间
     System.out.println(LocalDateTime.now()); 
     // 结果:2019-12-19T20:28:50.358
     
     System.out.println(LocalDate.now()); 
     // 结果:2019-12-19
     
     System.out.println(LocalTime.now());
     // 结果:20:28:50.358
     
     System.out.println(LocalTime.now().toString());
     // 结果:20:28:50.358
     
     // 获取指定时间
     System.out.println(LocalDateTime.of(2019,12,18,10,2,1));
     // 结果:2019-12-18T10:02:01
     
     // 获取1天1小时之后的时间
     System.out.println(LocalDateTime.now().plusDays(1).plusHours(1));
     // 结果:2019-12-20T21:28:50.358
     
     // 获取1天1小时之之前的时间
     System.out.println(LocalDateTime.now().plusDays(-1).plusHours(-1));
     // 2019-12-18T19:28:50.358
     
     // 获取指定的年月日
     System.out.println(LocalDateTime.now().getYear());
     System.out.println(LocalDateTime.now().getMonthValue());
     System.out.println(LocalDateTime.now().getDayOfMonth());
     
     // 计算时间距离
     LocalDate localDate1 = LocalDate.of(2018,10,2);
     LocalDate localDate2 = LocalDate.of(2019,11,3);
     long num = localDate1.until(localDate2, ChronoUnit.DAYS);
     System.out.println("until:days:"+num);
     num = localDate1.until(localDate2, ChronoUnit.WEEKS);
     System.out.println("until:days:"+num);
     // TemporalAdjusters 实现:上一个,下一个时间点
     System.out.println(LocalDate.now().with(TemporalAdjusters.previous(DayOfWeek.MONDAY)));
     System.out.println(LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)));
     System.out.println(LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.MONDAY)));
     // 月最后一天
     System.out.println(LocalDate.now().with(TemporalAdjusters.lastDayOfMonth()));
     // 月最后一个周一
     System.out.println(LocalDate.now().with(TemporalAdjusters.lastInMonth(DayOfWeek.MONDAY)));
     // 月第一天
     System.out.println(LocalDate.now().with(TemporalAdjusters.firstDayOfNextMonth()));
     System.out.println(LocalDate.now().with(TemporalAdjusters.dayOfWeekInMonth(2,DayOfWeek.MONDAY)));
    
     // 时间格式化 DateTimeFormatter
     DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
     // date -> string
     System.out.println(dateTimeFormatter.format(LocalDateTime.now()));
     // string -> date
     System.out.println(dateTimeFormatter.parse("20190212111111"));
     System.out.println(LocalDateTime.parse("20190212111111", dateTimeFormatter));
    
     // 时区 Instant
     // UTC时区(格林尼治时间)
     // 获取UTC时间   比北京时间晚8小时
     Instant instant = Instant.now();
     System.out.println(instant);
     // 获取北京时间(东8区)
     OffsetDateTime offsetDateTime = Instant.now().atOffset(ZoneOffset.ofHours(8));
     System.out.println("offsetDateTime:"+offsetDateTime);
     // 获取时间戳
     System.out.println("时间戳:"+Instant.now().toEpochMilli());
     // 时间戳操作
     System.out.println("时间戳:"+Instant.ofEpochSecond(18).plusMillis(1).toEpochMilli());
    
     // LocalDateTime 与时间戳转换
     // 时间戳 -》 LocalDateTime (默认改时间戳为格林尼治时间)
     long timestamp_1 = System.currentTimeMillis();
     LocalDateTime localDateTime = Instant.ofEpochMilli(timestamp_1).atOffset(ZoneOffset.ofHours(0)).toLocalDateTime();
     long timestamp = LocalDateTime.now().toInstant(ZoneOffset.ofHours(0)).toEpochMilli();
     System.out.println("时间戳:timestamp_1="+timestamp_1);
     System.out.println("时间戳:localDateTime="+localDateTime);
     System.out.println("时间戳:timestamp="+timestamp);
    
     // 兼容旧版本Date
     LocalDateTime ldt = LocalDateTime.of(2019,12,18,10,2,1);
     Date date = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
     // date -> LocalDateTime
     LocalDateTime dt = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();


  • 相关阅读:
    文章的上一页和下一页功能
    mysql的子查询in()操作及按指定顺序显示
    apache的配置详解
    mysql replace()用法
    js判断手机登陆用户
    mysql的常用函数
    mysql substring_index()查询某个字符中以某个分割符分割后的值
    mysql复制表数据,多表数据复制到一张表
    mysql数据去重复distinct、group by
    js获取站点根目录
  • 原文地址:https://www.cnblogs.com/outpointexception/p/12071380.html
Copyright © 2020-2023  润新知