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

java8 各种时间转换方法的更多相关文章

  1. Java8 日期/时间(Date Time)使用简介

    特别说明: LocalDateTime 为日期时间的计算提供了很大的方便, 在构造对象/运算/toString等方便都非常便利. 3个常用的类: java.time.LocalDateTime; ja ...

  2. 详解JavaScript UTC时间转换方法

    这篇文章主要介绍了JavaScript UTC时间转换方法,介绍了本地时间到UTC时间的转换.UTC日期到本地日期的转换,感兴趣的小伙伴们可以参考一下 一.前言 1.UTC: Universal Ti ...

  3. [转] Java8 日期/时间(Date Time)API指南

    [From] http://www.importnew.com/14140.html Java 8日期/时间( Date/Time)API是开发人员最受追捧的变化之一,Java从一开始就没有对日期时间 ...

  4. Thymeleaf 如何支持java8的时间LocalDate和LocalDatetime

    一.添加依赖 <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thym ...

  5. Java8 日期时间API

    一.转换 1.与字符串 //LocalDateTime 转 字符串 String str = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss ...

  6. Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate

    通过Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的优点,java8具有很多优点,现在网上查到的农历转换工具类都是基于jdk7及以前的类写的,下面使用ja ...

  7. java8日期时间

    ###与时间有关的5个包* java.time* java.time.chrono* java.time.format* java.time.temporal* java.time.zone###ja ...

  8. java8 日期时间之间的关系

     Class or Enum Year Month Day Hours Minutes Seconds* Zone Offset Zone ID toString Output Where Discu ...

  9. Java8中时间日期库的20个常用使用示例

    除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用Java 8的这套API.Java对日期, ...

随机推荐

  1. jmeter参数化之用户自定义变量

    1.     用badboby进行录制,录制完成后保存,用JMeter格式进行保存,如:登陆.jmx 2.     在jmeter中打开保存的文件登陆.jmx. 3.线程组右击-添加-配置元件-用户定 ...

  2. VC++1.5太伟大了

    功能样样俱全,一点不比现在的VS系列差 VC++1.5全貌,虽然很古老,但是已经可以了. 新建的文档试图,多文档工程,很像样 文档试图,单文档工程,已经非常像样了,和记事本差不多了 这是资源编辑器,寒 ...

  3. springmvc:入门环境搭建

    引入依赖(pom.xml): <!-- 版本锁定 --> <properties> <spring.version>5.0.2.RELEASE</spring ...

  4. https://vjudge.net/problem/2198220/origin

    https://vjudge.net/problem/2198220/origin枚举等差数列第一个和第二个,然后二分确定数列后面是否存在,复杂度比较玄学,卡过了. #include<iostr ...

  5. ubuntn16.04指令

    基础知识: ubuntn中的/表示根目录,包括bin,mnt等文件夹 /home表示家目录,/home/user表示用户下的家目录,/root表示root目录 常用指令: 进入root : sudo ...

  6. 配置android studio环境-Hello world

    运行hello world demo 运行D:\Program Files\Android\Android Studio\bin 选择创建一个项目 出现一系列的选择 如果没有出现下列问题,直接跳过 备 ...

  7. apache https 双向认证

    Https分单向认证和双向认证 单向认证表现形式:网站URL链接为https://xxx.com格式 双向认证表现心事:网站URL链接为https://xxx.com格式,并且需要客户端浏览器安装一个 ...

  8. 一次完整的HTTP事务的过程、从输入URL到网页展示,浏览器都经历了什么?

    详细介绍:老生常谈-从输入url到页面展示到底发生了什么 (1)一次完整的HTTP事务的过程 基本流程: a. 域名解析 b. 发起TCP的3次握手 c. 建立TCP连接后发起http请求 d. 服务 ...

  9. poj 2115 扩展欧几里德

    #include<stdio.h> #include<string.h> #define max 32 typedef long long LL; LL pow2[max+]; ...

  10. opencv4 java 验证码噪点 8邻域降噪

    工程下载地址https://download.csdn.net/download/qq_16596909/11503962 程序运行后,同样会把图片存放在以下路径 首先来看一下原图 二值化后,可以把这 ...