zoukankan      html  css  js  c++  java
  • 1.4 java8 LocalDate

    一、概述

    在JAVA中,常用的处理日期和时间的类主要有Date,Calendar,而在JDK1.8中,新增了LocalDate、LocalTime、LocalDateTime 类的实例是不可变的对象,分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。
    注:ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表示法。

    1. api

    2. Instant 时间戳

    用于“时间戳”的运算。它是以Unix元年(传统的设定为UTC时区1970年1月1日午夜时分)开始所经历的描述进行运算。

    Instant.now() // 2020-09-17T06:03:18.795Z
    Instant.now().toEpochMilli() // 1600322598885
    System.currentTimeMillis() // 1600322598885

    3. Duration 和 Period

    Duration:用于计算两个“时间”间隔

    Period:用于计算两个“日期”间隔 

    // 计算日期间隔
    LocalDate startDate = LocalDate.of(2020, 9, 15);
    LocalDate endDate = LocalDate.of(2020, 9, 20);
    Period period = Period.between(startDate, endDate);
    System.out.println("period = " + period.getDays()); // 5
    
    // 计算时间间隔
    Instant start = Instant.parse("2020-09-17T14:15:30.00Z");
    Instant end = Instant.parse("2020-09-17T14:16:30.00Z");
    Duration duration = Duration.between(start, end);
    System.out.println("duration = " + duration.getSeconds()); // 60

    4. 日期的操纵

    TemporalAdjuster : 时间校正器。有时我们可能需要获取例如:将日期调整到“下个周日”等操作。

    TemporalAdjusters : 该类通过静态方法提供了大量的常用 TemporalAdjuster 的实现。

    示例:

    LocalDateTime date = LocalDateTime.now();
    
    // 1.本月第一天
    LocalDateTime firstday = date.with(TemporalAdjusters.firstDayOfMonth());
    System.out.println("firstday = " + firstday);   // 2020-06-01T13:35:13.124
    
    // 本月第一天
    LocalDate now = LocalDate.now();
    LocalDate firstday1 = LocalDate.of(now.getYear(), now.getMonth(), 1);
    System.out.println("firstday1 = " + firstday1); // 2020-06-01
    
    // 上个月第一天
    LocalDate lastMonth = LocalDate.now().plusMonths(-1); // .minusMonths(1);
    LocalDate next_firstday = LocalDate.of(lastMonth.getYear(), lastMonth.getMonth(), 1);
    System.out.println("next_firstday = " + next_firstday); // 2020-05-01
    
    // 2.本月最后一天
    LocalDateTime lastDay = date.with(TemporalAdjusters.lastDayOfMonth());
    System.out.println("lastDay = " + lastDay);     // 2020-06-30T13:35:13.124
    
    // 上个月最后一天
    LocalDateTime next_lastday = date.with(TemporalAdjusters.lastDayOfMonth());
    System.out.println("next_lastday = " + next_lastday);   //  2020-06-30T14:02:53.152
    
    // 下个周日:
    LocalDate nextSunday = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
    System.out.println("nextSunday = " + nextSunday);   // 2020-06-28
    
    // 处理时间
    LocalTime time = LocalTime.now();
    System.out.println("time = " + time);   // 13:44:17.929

    //3.相差
    // 计算两个日期相差的月份数
    long betweenMONTHS = ChronoUnit.MONTHS.between(beforeDate, afterDate);

    5. 解析与格式化

    java.time.format.DateTimeFormatter 类:该类提供了三种格式化方法:
    预定义的标准格式
    语言环境相关的格式
    自定义的格式

    6. 时区的处理

    Java8 中加入了对时区的支持,带时区的时间为分别为:
    ZonedDate、ZonedTime、ZonedDateTime
    其中每个时区都对应着 ID,地区ID都为 “{区域}/{城市}”的格式
    例如 :Asia/Shanghai 等
    ZoneId:该类中包含了所有的时区信息
    getAvailableZoneIds() : 可以获取所有时区时区信息
    of(id) : 用指定的时区信息获取 ZoneId 对象

    7. 与传统日期处理的转换

    参考:

    java8 LocalDate,LocalDateTime中的方法

  • 相关阅读:
    一个简单的knockout.js 和easyui的绑定
    knockoutjs + easyui.treegrid 可编辑的自定义绑定插件
    Knockout自定义绑定my97datepicker
    去除小数后多余的0
    Windows Azure Web Site (15) 取消Azure Web Site默认的IIS ARR
    Azure ARM (1) UI初探
    Azure Redis Cache (3) 创建和使用P级别的Redis Cache
    Windows Azure HandBook (7) 基于Azure Web App的企业官网改造
    Windows Azure Storage (23) 计算Azure VHD实际使用容量
    Windows Azure Virtual Network (11) 创建VNet-to-VNet的连接
  • 原文地址:https://www.cnblogs.com/shiyun32/p/12521360.html
Copyright © 2011-2022 走看看