Java8新特性——Joda时间处理

    首先说我们为什么要使用 Joda?
    Joda-Time 令时间和日期值变得易于管理、操作和理解。事实上,易于使用是 Joda 的主要设计目标。其他目标包括可扩展性、完整的特性集以及对多种日历系统的支持。并且 Joda 与 JDK 是百分之百可互操作的,因此您无需替换所有 Java 代码,只需要替换执行日期/时间计算的那部分代码。
    Joda-Time提供了一组Java类包用于处理包括ISO8601标准在内的date和time。可以利用它把JDK Date和Calendar类完全替换掉,而且仍然能够提供很好的集成。
    Joda-Time官网:https://www.joda.org/joda-time/

在这里插入图片描述

在这里插入图片描述
//LocalDate 只关注年月日
LocalDate localDate = LocalDate.now();
System.out.println(localDate);

    //localDate.get...
    System.out.println(localDate.getYear()+"年"+localDate.getMonthValue()+"月"+localDate.getDayOfMonth()+"日");
    System.out.println("------------------------");

    //通过LocalDate.of()构造日期
    LocalDate localDate1 = LocalDate.of(2019, 3, 2);
    System.out.println(localDate1);
    System.out.println("-------------------------");

    LocalDate localDate2 = LocalDate.of(2018, 5, 20);
    //通过MonthDay 只获取月份和日
    MonthDay monthDay = MonthDay.of(localDate2.getMonthValue(), localDate2.getDayOfMonth());
    MonthDay monthDay1 = MonthDay.from(LocalDate.of(2019,5,20));
    if(monthDay.equals(monthDay1)){
        System.out.println("equals");
    }else {
        System.out.println("not equals");
    }

    System.out.println("------------------------");

// LocalTime 只关注时分秒
LocalTime localTime = LocalTime.now();
System.out.println(localTime);

    //指定增加/减少小时分钟等的数值
    LocalTime localTime1 = localTime.plusHours(1).plusMinutes(12);
    System.out.println(localTime1);

    //当前日期
    LocalDate localDate4 = LocalDate.now();
    System.out.println(localDate);
    //两周后
    LocalDate localDate3 = localDate4.plus(2, ChronoUnit.WEEKS);
    System.out.println(localDate3);

    System.out.println("----------------------");
    LocalDate localDate5 = localDate4.minus(2, ChronoUnit.MONTHS);
    System.out.println(localDate5);

    System.out.println("------------------------");
    //比较两个日期的前后关系
    LocalDate localDate6 = LocalDate.now();
    LocalDate localDate7 = LocalDate.of(2019, 3, 15);
    System.out.println(localDate6.isAfter(localDate7));
    System.out.println(localDate6.isBefore(localDate7));
    System.out.println(localDate6.equals(localDate7));
    System.out.println("------------------------");

    //打印所有时区
    Set<String> set = ZoneId.getAvailableZoneIds();
    Set<String> treeSet = new TreeSet<String>(){
        {
            addAll(set);
        }
    };

// treeSet.stream().forEach(System.out::println);
System.out.println("------------------------");

    ZoneId zoneId = ZoneId.of("Asia/Shanghai");
    LocalDateTime localDateTime = LocalDateTime.now();
    System.out.println(localDateTime);

    ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId);
    System.out.println(zonedDateTime);
    System.out.println("------------------------");

    //通过YearMonth 只获取年份和月份
    YearMonth yearMonth = YearMonth.now();
    System.out.println(yearMonth);
    System.out.println(yearMonth.lengthOfMonth());
    System.out.println(yearMonth.isLeapYear());

    YearMonth yearMonth1 = YearMonth.of(2020, 2);
    System.out.println(yearMonth);
    //是闰年嘛
    System.out.println(yearMonth1.isLeapYear());
    //一年多少天
    System.out.println(yearMonth1.lengthOfYear());
    System.out.println(yearMonth1.lengthOfMonth());

    System.out.println("------------------------");
    LocalDate localDate8 = LocalDate.now();
    LocalDate localDate9 = LocalDate.of(2018, 10, 10);
    //时期间隔
    Period period = Period.between(localDate9, localDate8);
    //间隔年数
    System.out.println(period.getYears());
    //间隔多少月
    System.out.println(period.getMonths());
    //间隔多少天
    System.out.println(period.getDays());

猜你喜欢

转载自blog.csdn.net/weixin_43658429/article/details/88067860
今日推荐