电脑@如何处理计算机中的日期和时间问题?( 六 )



电脑@如何处理计算机中的日期和时间问题?
本文插图
4.3. DateTimeFormatter 上文已经说到 , DateTimeFormatter 是用来代替 SimpleDateFormat 的 。 与 SimpleDateFormat 相比 , DateTimeFormatter 的一个明显优势在于它是 线程安全 的 。 SimpleDateFormat 由于不是线程安全的 , 使用时只能在方法内部创建新的局部变量 , 而 DateTimeFormatter 可以只创建一个实例 。
DataTimeFormat 预定义的字符串和 SimpleDateFormat 一模一样 , 来看下 DateTimeFormatter 的基本使用:
电脑@如何处理计算机中的日期和时间问题?
本文插图
还记得 LocalDateTime 的 parse() 方法吗?我们查看一下它的源码:
电脑@如何处理计算机中的日期和时间问题?
本文插图
从源码中我们看到 , parse() 方法可以传入两个参数 , 第二个参数就是一个 DateTimeFormatter , 也就是说不仅 ISO 8601 标准格式的字符串可以被解析 , 我们完全可以自定义被解析的字符串格式 。
电脑@如何处理计算机中的日期和时间问题?
本文插图
DataTimeFormatter 的 ofPattern() 方法还可以传入一个 Locale 参数 , 这个参数的作用是使用当地的习惯来格式化时间:
电脑@如何处理计算机中的日期和时间问题?
本文插图
4.4. Instant 在新 API 中 , 使用 Instant 表示时间戳 , 它类似于 System.currentTimeMillis() 。 Instant 使用如下:
电脑@如何处理计算机中的日期和时间问题?
本文插图
给 Instant 加上一个时区 , 就可以创建出 ZonedDateTime:
电脑@如何处理计算机中的日期和时间问题?
本文插图
五、新旧 API 的转换 旧 API 转新 API 可以通过 toInstant() 方法转换为 Instant , 再由 Instant 转换成 ZonedDateTime:
电脑@如何处理计算机中的日期和时间问题?
本文插图
新 API 转旧 API 时 , 需要借助 long 类型时间戳实现:
电脑@如何处理计算机中的日期和时间问题?
本文插图
以上 , 就是 Java 日期和时间的全部内容了 , 有任何收获或疑问欢迎在评论区与大家一起讨论交流 。
本文作者:Alpinist Wang
声明:本文归 “力扣” 版权所有 , 如需转载请联系 。 文章封面图和文中部分图片来源于网络 , 如有侵权联系删除 。


推荐阅读