zoukankan      html  css  js  c++  java
  • java8 各种时间转换方法

    java8 各种时间转换方法

    本来按照常理日期时间是一个很简单的东西,只需要根据一个时间戳就可以算出当前的时间了。但这其实只是初级的想法,是因为你的项目还没有到跨时区部署的程度,一旦你的项目要部署到其他时区就会发现,同一个时间戳,在中国代表8点,在日本就代表9点了。Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java.util.Date定义为可修改的以及将SimpleDateFormat实现成非线程安全的,所以随着java版本的升级,产生了一系列代表时间的类

    • java.util.Date
    • java.sql.Date
    • java.sql.Time
    • java.sql.Timestamp
    • java.util.Calendar
    • java.time.Instant
    • java.time.LocalDate
    • java.time.LocalTime
    • java.time.LocalDateTime
    • java.time.ZonedDateTime

    其中后5个是java8以后才可以使用的时间类,是不是玲珑满目,目不暇接,除此之外这些时间类还有一系列配套格式转换工具,更是数不胜数。但java8以后的时间类就基本成熟了,可以适应目前所有的需求,下面逐一介绍java8以后的实践类

    1.Instant

    它代表的是时间戳
    你可已使用instant.toEpochMilli()来输出Long类型的毫秒数
    其他java8以后的时间类型都可以通过toInstant获取它

    2.ZoneId

    ZoneId代表的是时区,获取系统时区:

    ZoneId zone = ZoneId.systemDefault();
    
    • 1

    中国使用的北京时间是在东八区,日本使用的东京时间是东九区,要根据不同时区获取时区类可使用一下方法:
    ZoneId zoneId = ZoneId.of(“UTC+8”);//获取东八区的时区

    3.LocalDateTime

    LocalDate内部存储有日期和时间
    通过 LocalDate.now()可以获取当前时间,但这个当前时间是基于0时区的,而我们中国位于东八区,所以需要传入我们的时区,

    ZoneId zoneId = ZoneId.of("UTC+8");
     LocalDate.now(zoneId)
    
    • 1
    • 2

    返回的才是北京时间,

    4.LocalDate 和LocalTime

    LocalDate代表的是日期(年月日),LocalTime代表的是时间(时分秒),用法与LocalDateTime基本相同

    5DateTimeFormatter 时间格式化成String

    DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    String str= dtf2.format(dateTime);
    
    • 1
    • 2

    其中dateTime变量可以是LocalDateTime 也可以是LocalDate和LocalTime

    原文地址:https://blog.csdn.net/c0411034/article/details/81436093
  • 相关阅读:
    记swoole数据库连接池消失问题的解决方式
    表格逻辑的几个想法
    Java代码实现热部署
    一个接口代理demo
    thinkphp5 关于跨域的一些坑
    CoSky-Mirror 就像一个镜子放在 Nacos、CoSky 中间,构建一个统一的服务发现平台
    CoSky 高性能 服务注册/发现 & 配置中心
    Govern Service 基于 Redis 的服务治理平台
    Govern EventBus
    mysql中查看视图代码
  • 原文地址:https://www.cnblogs.com/jpfss/p/11195047.html
Copyright © 2011-2022 走看看