• java.time.LocalDate的优点


      最近搞东西的时候要操作时间,就去网上了解一下时间操作被用的最多的几个类java.util.Calendar、java.util.Date、java.time.LocalDate,这三个时间类中java.time.LocalDate是由java 8新提供的,记录下三个类的特点。

    • java.util.Date、java.util.Calendar

      Date和Calendar不支持时区,且非线程安全。Date可读性差,需要对其进行格式化,而且Date对时间处理比较麻烦,想获取某年、某月、某星期之类的时间太难了,可能有人会说Date不是有getYear、getMonth等这些方法啊,获取年月日很简单,但要知道,Date的这些方法都被弃用了。

    • java.time.LocalDate

      LocalDate是不可变的和线程安全的时间类,且支持时区设置,它是Java 8提供的全新日期时间类。

      LocalDate的常用API:

            方法名                          返回类型                说明    
    getYear()                              int              获取当前日期的年
    getMonth()                             Month            获取当前日期的月份对象
    getMonthValue()                        int              获取当前日期的月
    getDayOfWeek()                         DayOfWeek        获取当前日期对应星期几字段
    getDayOfMonth()                        int              获取当前日期是该月第几天
    getDayOfYear()                         int              获取当前日期是该年第几天
    withYear(int year)                     LocalDate        修改当前日期的年份,如果修改后日期无效,
                                      将被更改为修改后日期该月的最后一个有效日期 withMonth(
    int month) LocalDate 修改当前日期的月份(1-12),如果日期无效,
                                      将被更改为该月份最后一个有效日期 withDayOfMonth(
    int dayOfMonth) LocalDate 修改当前日期在当月的第几天(1-31天,根据月份不同而变化)
                                      ,如果修改后日期无效,抛出异常 isLeapYear()
    boolean 是否是闰年,true:是闰年,false:平年 lengthOfMonth() int 获取当前日期所在月份的总天数 lengthOfYear() int 获取当前日期所在年份的总天数 plusYears(long yearsToAdd) LocalDate 当前日期所在年份增加指定年份数 plusMonths(long monthsToAdd) LocalDate 当前日期所在月份增加指定月份数 plusWeeks(long weeksToAdd) LocalDate 当前日期增加指定的周数 plusDays(long daysToAdd) LocalDate 当前日期增加指定的天数 minusYears(long yearsToSubtract) LocalDate 当前日期所在年份减去指定年份数 minusMonths(long monthsToSubtract) LocalDate 当前日期所在月份减去指定月份数 minusWeeks(long weeksToSubtract) LocalDate 当前日期减去指定的周数 minusDays(long daysToSubtract) LocalDate 当前日期减去指定的天数 compareTo(ChronoLocalDate other) int 比较当前日期和other日期的大小,返回值如
                                      果为正则当前日期较大,为负则other日期较大 isBefore(ChronoLocalDate other)
    boolean 获取当前日期是否在other日期之前, isAfter(ChronoLocalDate other) boolean 获取当前日期是否在other日期之后 isEqual(ChronoLocalDate other) boolean 获取当前日期是否与other日期相等

      常用API方法:

    LocalDate now = LocalDate.now();
    System.out.println("获取当前日期的LocalDate对象:"+now);
    LocalDate date2 = LocalDate.parse("2012-02-29");
    System.out.println("获取指定字符串日期的LocalDate对象:"+date2);
    int year = now.getYear();
    System.out.println("getYear()获取当前日期的年份:"+year);
    Month month = now.getMonth();
    System.out.println("getMonth()获取当前日期的月份对象:"+month);
    int monthNum = now.getMonthValue();
    System.out.println("getMonthValue()获取当前日期的月份:"+monthNum);
    DayOfWeek dayofWeek = now.getDayOfWeek();
    System.out.println("getDayOfWeek()获取当前日期对应的星期几字段:"+monthNum);
    int dayOfMonth = now.getDayOfMonth();
    System.out.println("getDayOfMonth()获取当前日期在当前月的第几天:"+dayOfMonth);
    int dayOfYear = now.getDayOfYear();
    System.out.println("getDayOfYear()获取当前日期在当前年的第几天:"+dayOfYear);
    LocalDate nowYear = now.withYear(2013);
    System.out.println("withYear()修改当前日期年份: "+nowYear);
    LocalDate nowMonth = now.withMonth(3);
    System.out.println("withMonth()修改当前日期月份: "+nowMonth);
    LocalDate nowDayOfMonth = now.withDayOfMonth(21);
    System.out.println("withDayOfMonth()修改当前日期在当月的天数: "+nowDayOfMonth);
    boolean isLeapYear = now.isLeapYear();
    System.out.println("isLeapYear()获取当前日期是否是闰年: "+isLeapYear);
    int lengthOfMonth = now.lengthOfMonth();
    System.out.println("lengthOfMonth()获取当前日期所在月份总天数: "+lengthOfMonth);
    int lengthOfYear = now.lengthOfYear();
    System.out.println("lengthOfYear()获取当前日期所在年份总天数: "+lengthOfYear);
    LocalDate nowPlusYears = now.plusYears(-2);
    System.out.println("plusYears当前日期所在年份增加指定年份数:"+nowPlusYears);
    LocalDate nowPlusMonths = now.plusMonths(2);
    System.out.println("plusMonths当前日期所在月份增加指定月份数:"+nowPlusMonths);
    LocalDate nowPlusWeeks = now.plusWeeks(2);
    System.out.println("plusMonths当前日期增加指定星期周数:"+nowPlusWeeks);
    LocalDate nowDays = now.plusDays(3);
    System.out.println("nowDays当前日期增加指定天数:"+nowDays);
    int compareTo = now.compareTo(date2);
    System.out.println("compareTo比较当前日期与指定日期的大小:"+compareTo);
    boolean before = now.isBefore(date2);
    System.out.println("isBefore获取当前日期是否在指定日期之前:"+before);
    boolean after = now.isAfter(date2);
    System.out.println("isAfter获取当前日期是否在指定日期之后:"+after);
    boolean equal = now.isEqual(date2);
    System.out.println("isEqual获取当前日期是否与指定日期相等:"+equal);

      运行结果:

    获取当前日期的LocalDate对象:2020-07-07
    获取指定字符串日期的LocalDate对象:2012-02-29
    getYear()获取当前日期的年份:2020
    getMonth()获取当前日期的月份对象:JULY
    getMonthValue()获取当前日期的月份:7
    getDayOfWeek()获取当前日期对应的星期几字段:7
    getDayOfMonth()获取当前日期在当前月的第几天:7
    getDayOfYear()获取当前日期在当前年的第几天:189
    withYear()修改当前日期年份: 2013-07-07
    withMonth()修改当前日期月份: 2020-03-07
    withDayOfMonth()修改当前日期在当月的天数: 2020-07-21
    isLeapYear()获取当前日期是否是闰年: true
    lengthOfMonth()获取当前日期所在月份总天数: 31
    lengthOfYear()获取当前日期所在年份总天数: 366
    plusYears当前日期所在年份增加指定年份数:2018-07-07
    plusMonths当前日期所在月份增加指定月份数:2020-09-07
    plusMonths当前日期增加指定星期周数:2020-07-21
    nowDays当前日期增加指定天数:2020-07-10
    compareTo比较当前日期与指定日期的大小:8
    isBefore获取当前日期是否在指定日期之前:false
    isAfter获取当前日期是否在指定日期之后:true
    isEqual获取当前日期是否与指定日期相等:false
  • 相关阅读:
    数据库第三范式的思考
    channel通道例子
    go 测试代码性能实例
    go 新建項目引入gin失敗
    go 创建切片slice的四种方法
    Hibernate查询操作
    shell 分割训练数据
    hadoop streaming 分桶到不同的part
    C语言调用另一个文件的方法
    在springboot中使用jdbcTemplate(3)
  • 原文地址:https://www.cnblogs.com/lovelyli/p/13261995.html
Copyright © 2020-2023  润新知