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
 

java8 Date Localdatetime instant 相互转化(转) 及当天的最大/最小时间的更多相关文章

  1. java8的LocalDateTime与Date互相转换

    LocalDateTime转Date Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant(); Date ...

  2. java8 Date/Time API 新的日期处理工具

    接上篇文章 java8 新特性 由于上篇过于庞大,使得重点不够清晰,本篇单独拿出 java8 的 Date/Time api 进行说明,新的日期时间工具全部都在 java.time 及其子包中. 新 ...

  3. JAVA8的LocalDateTime使用心得和工具类

    今天做不成的事,明天也不会做好. 同学们,JAVA8出了这么久,不知道你们有没有用过它的LocalDateTime类型,还是依然用Date类型呢?其实,LocalDateTime类型给我们提供了很多便 ...

  4. LocalDate LocalTime LocalDateTime Instant的操作与使用

    一.简介 LocalDate表示当前(或指定)日期,格式为:yyyy-MM-dd LocalTime表示当前(或指定)时间,格式为:HH:mm:ss SSS LocalDateTime表示当前(或指定 ...

  5. java8 Date LocalDate LocaDateTime 互相转化

    java 8中 java.util.Date 类新增了两个方法,分别是from(Instant instant)和toInstant()方法 // Obtains an instance of Dat ...

  6. Java8 Date与LocalDate互转

    Java8 日期时间API,新增了LocalDate.LocalDateTime.LocalTime等线程安全类,接下来要说的是LocalDate与java.util.Date之间的转换. 1.Loc ...

  7. Java8 Date API

    一 .Clock 时钟 Clock类提供了访问当前日期和时间的方法,Clock是时区敏感的,可以用来取代 System.currentTimeMillis() 来获取当前的微秒数.某一个特定的时间点也 ...

  8. java8 获取某天最大(23:59:59)和最小时间(00:00:00)

    public class DateUtil { // 获得某天最大时间 2018-03-20 23:59:59 public static Date getEndOfDay(Date date) { ...

  9. 【C#】datetimepicker里面如何设置日期为当天日期,而时间设为0:00或23:59?

    今天无意中发现要根据日期查询时间,datatimepicker控件会把时间默认成当前时间(当你的控件只显示日期时),这样查询出来的出来的数据会有误差,用来下面的办法成功设置日期为当天日期,而时间设为0 ...

随机推荐

  1. python 下安装pymysql应用

    前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文测试python版本:2.7.11. ...

  2. Java MyBatis逆向工程,自动生成pojo,mapper

    生成xml文件,文件名generator.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYP ...

  3. Kafka主题体系架构-复制、故障转移和并行处理

    本文讨论了Kafka主题的体系架构,讨论了如何将分区用于故障转移和并行处理. Kafka主题,日志和分区 Kafka将主题存储在日志中.主题日志分为多个分区.Kafka将日志的分区分布在多个服务器或磁 ...

  4. windows下将多个文件合并成一个文件,将ts文件变成MP3格式

    ①:先把全部的ts文件下载下来放到指定文件夹,这里我是放在桌面的ls里 ②:从cmd进去找到桌面的路径,也可以像我这样直接在桌面的路径上敲cmd进入: ③:直接合并使用命令“copy /b ls\*. ...

  5. Codeforces Round #333 (Div. 2) B. Approximating a Constant Range

    B. Approximating a Constant Range Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com ...

  6. CentOS7 Python3上安装paramiko

    1. CentOS 7下安装Python3.5 CentOS7默认安装了python2.7.5,要用 Python3需要自己手动安装.注意不要删除python2. 1.1 下载python3源码包 w ...

  7. 算法:二叉树的层次遍历(递归实现+非递归实现,lua)

    二叉树知识参考:深入学习二叉树(一) 二叉树基础 递归实现层次遍历算法参考:[面经]用递归方法对二叉树进行层次遍历 && 二叉树深度 上面第一篇基础写得不错,不了解二叉树的值得一看. ...

  8. 【IntelliJ IDEA】快捷键

    1.System.out.println();的快捷方法 sout然后Alt+Enter或者直接点 2.idea上 重写父类方法的快捷键 Ctrl+O之后,在弹出的上面选择要重写的方法 3.idea ...

  9. supersocket特征

    SuperSocket, 可扩展的 Socket 服务器框架 SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架.你无须了解如何使用 Sock ...

  10. 创建json对象

    jQuery创建json对象 方法二: <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...