如果我们可以跟别人说:“我们在1502643933071见面,别晚了!”那么就再简单不过了。但是我们希望时间与昼夜和四季有关,于是事情就变复杂了。Java1.0中包含了一个Date类,但是它的大多数方法已经在Java 1.1引入Calendar类之后被弃用了。而Calendar并不比Date好多少。它们面临的问题是:

可变性:象日期和时间这样的类应该是不可变的。Calendar类中可以使用三种方法更改日历字段:set()、add() 和 roll()。

偏移性:Date中的年份是从1900开始的,而月份都是从0开始的。

格式化:格式化只对Date有用,Calendar则不行。

此外,它们也不是线程安全的,不能处理闰秒等。

可以说,对日期和时间的操作一直是Java程序员最痛苦的地方之一。第三次引入的API是成功的,并且java 8中引入的java.time API 已经纠正了过去的缺陷,将来很长一段时间内它都会为我们服务。

Java 8 吸收了 Joda-Time 的精华,以一个新的开始为 Java 创建优秀的 API。

java.time – 包含值对象的基础包

java.time.chrono – 提供对不同的日历系统的访问。

java.time.format – 格式化和解析时间和日期

java.time.temporal – 包括底层框架和扩展特性

java.time.zone – 包含时区支持的类

Java 8 吸收了 Joda-Time 的精华,以一个新的开始为 Java 创建优秀的 API。新的 java.time 中包含了所有关于时钟(Clock),本地日期(LocalDate)、本地时间(LocalTime)、本地日期时间(LocalDateTime)、时区(ZonedDateTime)和持续时间(Duration)的类。历史悠久的 Date 类新增了 toInstant() 方法,用于把 Date 转换成新的表示形式。这些新增的本地化时间日期 API 大大简化了了日期时间和本地化的管理。

说明:大多数开发者只会用到基础包和format包,也可能会用到temporal包。因此,尽管有68个新的公开类型,大多数开发者,大概将只会用到其中的三分之一。

java.time

本地日期(LocalDate)、本地时间(LocalTime)、本地日期时间(LocalDateTime)

LocalDate代表IOS格式(yyyy-MM-dd)的日期,可以存储 生日、纪念日等日期。

LocalTime表示一个时间,而不是日期

LocalDateTime是用来表示日期和时间的,这是一个最常用的类之一。

瞬时:Instant

Instant:时间线上的一个瞬时点。 这可能被用来记录应用程序中的事件时间戳。

在处理时间和日期的时候,我们通常会想到年,月,日,时,分,秒。然而,这只是时间的一个模型,是面向人类的。第二种通用模型是面向机器的,或者说是连续的。在此模型中,时间线中的一个点表示为一个很大的数,这有利于计算机处理。在UNIX中,这个数从1970年开始,以秒为的单位;同样的,在Java中,也是从1970年开始,但以毫秒为单位。

java.time包通过值类型Instant提供机器视图。Instant表示时间线上的一点,而不需要任何上下文信息,例如,时区。概念上讲,它只是简单的表示自1970年1月1日0时0分0秒(UTC)开始的秒数。因为java.time包是基于纳秒计算的,所以Instant的精度可以达到纳秒级。

时间戳:指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

带时区的日期、时间的处理

作为一个开发者,如果不用去处理时区和它带来的复杂性,那是幸运的。java.time包下的LocalDate、LocalTime、LocalDateTime和Instant基本能满足需求。当你不可避免时区时,ZonedDateTime等类可以满足我们的需求。

ZonedDateTime:一个在ISO-8601日历系统时区的日期时间,如 2007-12-03T10:15:30+01:00 Europe/Paris。

其中每个时区都对应着ID,地区ID都为“{区域}/{城市}”的格式,例如:Asia/Shanghai等

now():使用系统时间获取当前的ZonedDateTime

now(ZoneId):返回指定时区的ZonedDateTime

ZoneId:该类中包含了所有的时区信息,一个时区的ID,如 Europe/Paris

getAvailableZoneIds():静态方法,可以获取所有时区信息

of(String id):静态方法,用指定的时区信息获取ZoneId对象

Clock:使用时区提供对当前即时、日期和时间的访问的时钟。

持续时间:Duration

Duration:用于计算两个“时间”间隔

日期间隔:Period

Period:用于计算两个“日期”间隔

java.time.temporal .TemporalAdjuster : 时间校正器

TemporalAdjuster : 时间校正器。有时我们可能需要获取例如:将日期调整到“下一个工作日”等操作。

TemporalAdjusters : 该类通过静态方法(firstDayOfXxx()/lastDayOfXxx()/nextXxx())提供了大量的常用 TemporalAdjuster 的实现。

java.time.format.DateTimeFormatter 类

该类提供了三种格式化方法:

预定义的标准格式。如:ISO_DATE_TIME;ISO_DATE

本地化相关的格式。如:ofLocalizedDate(FormatStyle.MEDIUM)

自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”)

与传统日期处理的转换

#怎样获取当前时间和时区_JDK1.8新增日期时间类型相关推荐

  1. convert.todatetime指定日期格式_JDK1.8新增日期时间类型

    如果我们可以跟别人说:"我们在1502643933071见面,别晚了!"那么就再简单不过了.但是我们希望时间与昼夜和四季有关,于是事情就变复杂了.Java1.0中包含了一个Date ...

  2. ISO8601和UTC 时间,由秒数转化日期时间,日期到秒数

    ISO8601和UTC 时间,由秒数转化日期时间,日期到秒数 ISO8601时间格式:2018-6-5T17:46:50Z UTC时间格式:  2018-06-05T03:46:50+08:00 等同 ...

  3. 两个时间计算毫秒在线_SPL 的日期时间函数(下)

    4使用日期时间数据的计算 除了直接从日期时间数据中获取信息,在SPL中还可以使用日期时间类数据来执行各类计算. 最常用的有关日期的计算就是计算年龄: A1和B1中的数据如下: 在第2行用age() 函 ...

  4. python日期格式统一化: 各种日期时间格式处理为标准统一日期时间格式

    python日期格式统一化: 各种日期时间格式处理为标准统一日期时间格式 import traceback import pandas as pd aa = ['2021年12月11日 19:19', ...

  5. 日历 android 周历,Android Studio 基础 之 获取系统Calendar 日历日程 (涉及指定日期时间判断是星期几的方法使用)的方法整理...

    Android Studio 基础 之 获取系统Calendar 日历日程 (涉及指定日期时间判断是星期几的方法使用)的方法整理 目录 Android Studio 基础 之 获取系统Calendar ...

  6. android edittext获取 time值,在Android EditText中实现日期时间选择器(DatePicker和TimePicker)...

    利用Android应用框架提供的DatePicker(日期选择器)和TimePicker(时间选择器),实现日期时间选择器. Dialog的Content布局文件(date_time_dialog.x ...

  7. java中时间输出的格式_Java 打印日期/时间格式

    Java格式 - Java 打印日期/时间格式 Java 打印日期/时间格式处理日期,时间和日期时间值. Java 打印日期/时间格式可以应用于格式值为long,Long,java.util.Cale ...

  8. linux常用时间命令全集,Linux 指令篇:日期时间排程--date

    Linux 指令篇:日期时间排程--date 名称 : date 使用权限 : 所有使用者 使用方式 : date [-u] [-d datestr] [-s datestr] [--utc] [-- ...

  9. date( 1day ) php,PHP_使用PHP的日期与时间函数技巧,PHP的日期时间函数date() 1,年- - phpStudy...

    使用PHP的日期与时间函数技巧 PHP的日期时间函数date() 1,年-月-日 复制代码 代码如下: echo date('Y-m-j'); 2007-02-6 echo date('y-n-j') ...

  10. php 时间随机数,PHP——生成随机数和日期时间

    在PHP里面两个常用的函数 rand();    生成随机数   当括号内无参数时 系统会以当前时间为种子进行随机数的生成 rand(1,10);  括号里面是生成随机数的范围,在形成的随机数在1~1 ...

最新文章

  1. pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性
  2. 基于python的界面自动化测试-Python实现性能自动化测试竟然如此简单
  3. 15.profile-api
  4. 拥抱开源,好莱坞有了自己的开源基金会:学院软件基金会
  5. 幼儿编程学java不_《终于有人说出来了——Java不适合于作为主要编程教学语言》我的看法...
  6. Sitemesh 3 的使用及配置
  7. 滴滴医护专车新增南京 共上线6城覆盖1.8万医护
  8. 关于 HDFS Append
  9. ARC077C pushpush 递推
  10. OpenGl 游戏编程笔记 第七章:纹理映射 (texture mapping) (一)
  11. 在WIN10专业版上安装WINCC7.4的踩坑之路
  12. 规划过程组-项目管理
  13. C++ Reflection
  14. 读论文,第十六天:FrownOnError: Interrupting Responses from Smart Speakers by Facial Expressions
  15. python - 啃书 第八章 正则表达式
  16. 免费微信批量公众号采集文章方法
  17. Cadence PCB仿真使用Allegro PCB SI生成振铃ringing仿真报告及报告导读图文教程
  18. pap认证失败_PPP PAP(CHAP)认证
  19. r语言归一化_生物信息学之RMA(Robust Multi-Array Average)算法的归一化和最终计算过程...
  20. defy 超频/降频CPU设置

热门文章

  1. 机器学习Normal Equation的推导(不要求矩阵求导)
  2. 动态规划精卫填海之路
  3. echarts--(2)--创建一个饼图
  4. vue组件化开发学习笔记-3-组件插槽
  5. vue组件化开发学习笔记-1-组件化开发思想
  6. MongoDB学习(黑马教程)-3-数据库MongoDB的删除文档操作
  7. indesign缩放图片被切割_InDesign怎么改变图片的大小
  8. python opencv 中文路径_解决python cv2.imread 读取中文路径的图片返回为None的问题
  9. 网站并发cpu占用率_来,控制一下 goroutine 的并发数量
  10. python按照日期筛选excel_用python判断Excel单元格格式为输出日期(日期字段位置不固定)的,按datetime格式输出日期(而非float)_python excle 日期列...