美文网首页
2021-04-11_LocalDate和LocalTime

2021-04-11_LocalDate和LocalTime

作者: 微笑碧落 | 来源:发表于2021-04-10 10:15 被阅读0次

    0.前言

    • Java 8 新增加了一些有关时间的API。如LocalDate和LocalTime。位于java.time下
    • Date和Calendar对象都建议不使用了。
    • 其中LocalDate仅仅包含日期,LocalTime仅仅保护时间。包含日期和时间的是LocalDateTime。

    1. Java8引入的有关时间的api

    • Clock ——时钟类可以指定一个时区,它可以获得当前的时刻、日期和时间
    • Duration ——表示一段时间
    • Instant ——表示在时间轴上的一个瞬间
    • LocalDate——在ISO-8601日历系统中的一个不带时区的日期
    • LocalDateTime ——在ISO-8601日历系统中的一个不带时区的日期和时间
    • LocalTime ——在ISO-8601日历系统中的一个不带时区的时间
    • MonthDay ——在ISO-8601日历系统中的一个月份中的日期
    • OffsetDateTime ——在ISO-8601日历系统中的一个日期和时间,它加入了格林威治/UTC 时间偏移量
    • OffsetTime ——在ISO-8601日历系统中的一个时间,它加入了格林威治/UTC 时间偏移量
    • Period – 以天为单位的一段时间
    • Year ——在ISO-8601日历系统中的一年
    • YearMonth ——在ISO-8601日历系统中的一年中的月份
    • ZonedDateTime ——在ISO-8601日历系统中的一个带有时区的日期和时间
    • ZoneId ——表示一个时区ID
    • ZoneOffset —— 表示与格林威治/UTC时间的时区偏移量

    2.LocalDate的创建方法(LocalTime类似)

    • 注意如下的parse方法
    public static LocalDate now()//
    public static LocalDate of(int year, Month month, int dayOfMonth)//通过指定的时间创建一个LocalDate对象
    //throws DateTimeParseException if the text cannot be parsed。通过字符串解析来获得LocalDate,如果不能解析就抛出如下异常。
    public static LocalDate parse(CharSequence text)
    public static LocalDate parse(CharSequence text, DateTimeFormatter formatter)
    

    3.LocalDate的常用方法

    3.1生成LocalDateTime

    public LocalDateTime atStartOfDay(); //返回当天的起始时间
    public LocalDateTime dateTime = localDate.atTime(16,25,30);//设置当前日期的时间
    

    3.2获取年,月,日等

    public int getYear();
    public int getMonthValue();
    public int getDayOfMonth();
    

    3.3修改年,月,日等

    public LocalDate withDayOfMonth(int dayOfMonth);
    public LocalDate withDayOfYear(int dayOfYear); Returns a copy of this LocalDate with the day-of-year altered
    public LocalDate withMonth(int dayOfMonth)
    public LocalDate withYear(int dayOfMonth)
    

    3.4返回一些特殊的日期

    • 比如本月第1天,第2天,最后一天等
    public LocalDate with(TemporalAdjuster adjuster)
    localDate.with(TemporalAdjusters.firstDayOfMonth) //本月第一天
    
    • TemporalAdjusters.secondDayOfMonth 本月第二天
    • TemporalAdjusters.lastDayOfMonth 本月最后一天
    • 返回复杂的特殊日期.//2015年1月份第一个周一
    LocalDate.parse("2015-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); 
    

    3.5日期计算( 前几天,后几天,前几个月等)

    public LocalDate plusDays(long daysToAdd)
    public LocalDate plusMonths(long monthsToAdd)
    public LocalDate plusYears(long yearsToAdd)
    public LocalDate plus(long amountToAdd, TemporalUnit unit)
    如 localDate.plus(8, ChronoUnit.HOURS)
    //其中 TemporalUnit的取值如下:
    ChronoUnit.DAYS
    WEEKS
    MONTHS
    YEARS
    DECADES
    CENTURIES
    MILLENNIA
    ERAS
    

    3.6 日期比较

    • 注意,如果两个LocalDate的日期相等,返回的肯定是false。如果要包含相等日期,要如下操作(比较的日期+-1天即可):
    public boolean isBefore(ChronoLocalDate other);
    public boolean isAfter(ChronoLocalDate other);
    
    missionDate.isAfter(afterDatePicker.getValue().plusDays(-1)) ;
    missionDate.isBefore(beforeDatePicker.getValue().plusDays(1));
    

    4.格式化输出字符串

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMM");
    String formatDate = LocalDate.now().format(formatter);
    

    5.long转换为LocDateTime

    LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(millis), ZoneId.systemDefault());
    

    参考文章

    1. localDateTime、date、localDate、string、long之间的转换处理

    相关文章

      网友评论

          本文标题:2021-04-11_LocalDate和LocalTime

          本文链接:https://www.haomeiwen.com/subject/yofakltx.html