zoukankan      html  css  js  c++  java
  • java8 Date Localdatetime instant 相互转化(转) 及当天的最大/最小时间

    Java 8中 java.util.Date 类新增了两个方法,分别是from(Instant instant)和toInstant()方法

    // Obtains an instance of Date from an Instant object.
    public static Date from(Instant instant) {
        try {
            return new Date(instant.toEpochMilli());
        } catch (ArithmeticException ex) {
            throw new IllegalArgumentException(ex);
        }
    }

    // Converts this Date object to an Instant.
    public Instant toInstant() {
        return Instant.ofEpochMilli(getTime());
    }

    这两个方法使我们可以方便的实现将旧的日期类转换为新的日期类,具体思路都是通过Instant当中介,然后通过Instant来创建LocalDateTime(这个类可以很容易获取LocalDate和LocalTime),新的日期类转旧的也是如此,将新的先转成LocalDateTime,然后获取Instant,接着转成Date,具体实现细节如下:

    // 01. java.util.Date --> java.time.LocalDateTime
    public void UDateToLocalDateTime() {
        java.util.Date date = new java.util.Date();
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
    }

    // 02. java.util.Date --> java.time.LocalDate
    public void UDateToLocalDate() {
        java.util.Date date = new java.util.Date();
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
        LocalDate localDate = localDateTime.toLocalDate();
    }

    // 03. java.util.Date --> java.time.LocalTime
    public void UDateToLocalTime() {
        java.util.Date date = new java.util.Date();
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
        LocalTime localTime = localDateTime.toLocalTime();
    }


    // 04. java.time.LocalDateTime --> java.util.Date
    public void LocalDateTimeToUdate() {
        LocalDateTime localDateTime = LocalDateTime.now();
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zone).toInstant();
        java.util.Date date = Date.from(instant);
    }


    // 05. java.time.LocalDate --> java.util.Date
    public void LocalDateToUdate() {
        LocalDate localDate = LocalDate.now();
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
        java.util.Date date = Date.from(instant);
    }

    // 06. java.time.LocalTime --> java.util.Date
    public void LocalTimeToUdate() {
        LocalTime localTime = LocalTime.now();
        LocalDate localDate = LocalDate.now();
        LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zone).toInstant();
        java.util.Date date = Date.from(instant);
    }

    一、把LocalDate转成LocalDateTime后并取当天的最大和最小值
    LocalDate localDate = LocalDate.now();
    LocalDateTime minTime = localDate.atTime(LocalTime.MIN);
    LocalDateTime maxTime = localDate.atTime(LocalTime.MAX);
    二、LocalDateTime取当天的最大和最小值
    LocalDateTime localDateTime = LocalDateTime.now();
    LocalDateTime minTime = localDateTime.with(LocalTime.MIN);
    LocalDateTime maxTime = localDateTime.with(LocalTime.MAX);

    注意: 上面用的是LocalTime.MAX ,如果用TemporalAdjusters.lastDayOfMonth()则可以拿到这个月的最大天数

    常见方法: -- 引用自这里
    all method:
    1.  adjustInto  调整指定的Temporal和当前LocalDateTime对
    2.  atOffset    结合LocalDateTime和ZoneOffset创建一个
    3.  atZone  结合LocalDateTime和指定时区创建一个ZonedD
    4.  compareTo   比较两个LocalDateTime
    5.  format  格式化LocalDateTime生成一个字符串
    6.  from    转换TemporalAccessor为LocalDateTi
    7.  get 得到LocalDateTime的指定字段的值
    8.  getDayOfMonth   得到LocalDateTime是月的第几天
    9.  getDayOfWeek    得到LocalDateTime是星期几
    10. getDayOfYear    得到LocalDateTime是年的第几天
    11. getHour 得到LocalDateTime的小时
    12. getLong 得到LocalDateTime指定字段的值
    13. getMinute   得到LocalDateTime的分钟
    14. getMonth    得到LocalDateTime的月份
    15. getMonthValue   得到LocalDateTime的月份,从1到12
    16. getNano 得到LocalDateTime的纳秒数
    17. getSecond   得到LocalDateTime的秒数
    18. getYear 得到LocalDateTime的年份
    19. isAfter 判断LocalDateTime是否在指定LocalDateT
    20. isBefore    判断LocalDateTime是否在指定LocalDateT
    21. isEqual 判断两个LocalDateTime是否相等
    22. isSupported 判断LocalDateTime是否支持指定时间字段或单元
    23. minus   返回LocalDateTime减去指定数量的时间得到的值
    24. minusDays   返回LocalDateTime减去指定天数得到的值
    25. minusHours  返回LocalDateTime减去指定小时数得到的值
    26. minusMinutes    返回LocalDateTime减去指定分钟数得到的值
    27. minusMonths 返回LocalDateTime减去指定月数得到的值
    28. minusNanos  返回LocalDateTime减去指定纳秒数得到的值
    29. minusSeconds    返回LocalDateTime减去指定秒数得到的值
    30. minusWeeks  返回LocalDateTime减去指定星期数得到的值
    31. minusYears  返回LocalDateTime减去指定年数得到的值
    32. now 返回指定时钟的当前LocalDateTime
    33. of  根据年、月、日、时、分、秒、纳秒等创建LocalDateTi
    34. ofEpochSecond   根据秒数(从1970-01-0100:00:00开始)创建L
    35. ofInstant   根据Instant和ZoneId创建LocalDateTim
    36. parse   解析字符串得到LocalDateTime
    37. plus    返回LocalDateTime加上指定数量的时间得到的值
    38. plusDays    返回LocalDateTime加上指定天数得到的值
    39. plusHours   返回LocalDateTime加上指定小时数得到的值
    40. plusMinutes 返回LocalDateTime加上指定分钟数得到的值
    41. plusMonths  返回LocalDateTime加上指定月数得到的值
    42. plusNanos   返回LocalDateTime加上指定纳秒数得到的值
    43. plusSeconds 返回LocalDateTime加上指定秒数得到的值
    44. plusWeeks   返回LocalDateTime加上指定星期数得到的值
    45. plusYears   返回LocalDateTime加上指定年数得到的值
    46. query   查询LocalDateTime
    47. range   返回指定时间字段的范围
    48. toLocalDate 返回LocalDateTime的LocalDate部分
    49. toLocalTime 返回LocalDateTime的LocalTime部分
    50. toString    返回LocalDateTime的字符串表示
    51. truncatedTo 返回LocalDateTime截取到指定时间单位的拷贝
    52. until   计算LocalDateTime和另一个LocalDateTi
    53. with    返回LocalDateTime指定字段更改为新值后的拷贝
    54. withDayOfMonth  返回LocalDateTime月的第几天更改为新值后的拷贝
    55. withDayOfYear   返回LocalDateTime年的第几天更改为新值后的拷贝
    56. withHour    返回LocalDateTime的小时数更改为新值后的拷贝
    57. withMinute  返回LocalDateTime的分钟数更改为新值后的拷贝
    58. withMonth   返回LocalDateTime的月份更改为新值后的拷贝
    59. withNano    返回LocalDateTime的纳秒数更改为新值后的拷贝
    60. withSecond  返回LocalDateTime的秒数更改为新值后的拷贝
    61. withYear    返回LocalDateTime年份更改为新值后的拷贝
    原文链接:https://blog.csdn.net/zhang89xiao/article/details/78789423
    参考链接:
    https://blog.csdn.net/gisboygogogo/article/details/78239925
    https://www.jianshu.com/p/4a63b6872216
     
  • 相关阅读:
    C/C++——二维数组与指针、指针数组、数组指针(行指针)、二级指针的用法
    C/C++——C语言数组名与指针
    C/C++——C语言跳出多重循环方法
    知识储备——国际象棋术语中英文对照
    C/C++——C语言库函数大全
    C/C++——C语言常用库函数
    C/C++——[05] 函数
    C/C++——[04] 语句
    C/C++——[03] 注释
    C/C++——[02] 运算符和表达式
  • 原文地址:https://www.cnblogs.com/muxi0407/p/11713129.html
Copyright © 2011-2022 走看看