Java.time 包的优势

使用Java8,新的日期时间API引入覆盖旧的日期时间API的以下缺点。

非线程安全 - java.util.Date不是线程安全的,因此开发者必须在使用日期处理并发性问题。新的日期时间API是不可变的,并且没有setter方法。  设计不佳 - 默认的开始日期从1900年,开始每月从1天从0开始,所以没有统一。不直接使用方法操作日期。新的API提供了这样操作实用方法。  困难的时区处理 - 开发人员必须编写大量的代码来处理时区的问题。新的API设计开发保持特定领域设计。

JAVA8引入了 java.time 包 - 下一个新的日期时间API。以下是一些在java.time程序包引入重要的类。

本地 - 简化日期时间API,没有时间处理区的复杂性。  时区 - 专业的日期时间API来处理各种时区。

java.time 本地日期时间类

java.time处理本地日期时间的主要类为

LocalDateTime,LocalDate,LocalTime;

LocalDateTime可以处理日期时间,可以看做作为LocalDate,LocalTime的复合; LocalDate主要处理日期(year,month,day,week); LocalTime主要处理时间(h,m,s)

LocalDateTime

静态构造方式摘要 static LocalDateTime  static LocalDateTime     static LocalDateTime static LocalDateTime now() of(int year,int month,int dayofMonth,int hour,int minute[,int second[,int nanoSeconds]] ) parse(CharSequence text) ofEpochSecond(long epochSeconds,int nanoSeconds,ZoneOffset offset)  使用当前时间构造一个LocalDateTime对象 使用指定的数值创建一个LocalDateTime对象 (year,month,day从1开始,hour,min,second从0开始)  使用形如 “2017-2-28T13:29:30”的格式创建对象 使用纪元流逝秒创建对象,起点为 1970-1-1T00:00:00,offset一般使用ZoneOffset.UTF 成员方法摘要 +LocalDate +LocalTime +ZoneDateTime  +LocalDateTime +int +LocalDateTime   +String  toLocalDate() toLocalTime() atZone()  with(TemporalField field,long value) get(TemporalField field) plus(TemporalAmount amoutToAdd) plus(long amountToAdd,TemporaUnit unit)  toString() 获取该对象的 LocalDate对象 获取该对象的 LocalTime对象 获取该对象的 ZoneDateTime对象  修改LocalDateTime的时间数值参数(可以链式调用) 获取LocalDateTime的时间数值参数 对LocalDateTime的某个时间参数值的流逝量   字符串格式:2017-2-28T13:29:30

注:localDateTime的 with,get,plus 方法,都有单项filed的实现  with[Filed](int filed),如 withDayOfMonth(int days),主要Field值如下:

with,get:   year,month,dayOfMonth,hour,minute,second,dayOfYear; plus :    years,months,weeks,days,hours,minutes,seconds,nanos;

LocalDate

静态构造方式摘要 static LocalDate  static LocalDate    static LocalDate static LocalDate static LocalDate now() of(int year,int month[,int dayofMonth] )  parse(CharSequence text) ofEpochDay(long epochDay) ofYearDay(int year,int dayOfyear) 使用当前时间构造一个LocalDate对象 使用指定的数值创建一个LocalDate对象   使用形如 “2017-2-28”的格式创建对象 使用纪元流逝天数创建对象 指定年份,使用一年的总天数创建对象 成员方法摘要 +LocalDateTime +LocalDateTime +ZoneDateTime  +LocalDateTime +int +LocalDateTime   +String  asStartOfDay() atTime(int hour,int minute[,int second]) atZone()  with(TemporalField field,long value) get(TemporalField field) plus(TemporalAmount amoutToAdd) plus(long amountToAdd,TemporaUnit unit)  toString() 获取该对象的 LocalDateTime对象(time值归零) 使用指定time值,创建LocalDateTime对象 获取该对象的 ZoneDateTime对象  修改LocalDate的时间数值参数(可以链式调用) 获取LocalDate的时间数值参数 对LocalDate的某个时间参数值的流逝量   字符串格式:2017-2-28

注:同LocalDateTime ,LocalDate的 with,get,plus 方法,也都有单项filed的实现  with[Filed](int filed),主要Field值如下:

with,get:   year,month,dayOfMonth,dayOfYear; plus :    years,months,weeks,days;

LocalTime

静态构造方式摘要 static LocalTime  static LocalTime    static LocalTime static LocalTime static LocalTime now() of(int hour,int minute[,int dayofMonth] )  parse(CharSequence text) ofSecondOfDay(long seconds) ofNanoOfDay(long nanoSeconds) 使用当前时间构造一个LocalDate对象 使用指定的数值创建一个LocalDate对象   使用形如 “2017-2-28”的格式创建对象 使用指定seconds创建对象 使用指定nanoSeconds创建对象 成员方法摘要 +LocalDateTime  +LocalTime +int +LocalTime   +int +int +String  atDate(LocalDate date)  with(TemporalField field,long value) get(TemporalField field) plus(TemporalAmount amoutToAdd) plus(long amountToAdd,TemporaUnit unit)  toSecondOfDay() toNanoOfDay() toString() 于一个LocalDate对象创建一个LocalDateTime对象  修改LocalTime的时间数值参数(可以链式调用) 获取LocalTime的时间数值参数 对LocalTime的某个时间参数值的流逝量   获取总Second参数 获取总Nano参数 字符串格式:10:15:00

注:同LocalDateTime ,LocalTime的 with,get,plus 方法,也都有单项filed的实现  with[Filed](int filed),主要Field值如下:

with,get:   hour,minute,second; plus :    hours,minutes,seconds,nanos;

LocalDateTime,LocalDate,LocalTime都实现了compareTo,equals方法; with,get方法中,实现 TemporalField 接口的类:java.time.temporal.ChronoField; plus方法中,实现 TemporalAmout 接口的类:java.time.Duration,java.time.Peroid

实现

TemporalUnit

接口的类:java.time.temporal.

ChronoUnit

ChronoField、

ChronoUnit常量摘要

ChronoField ChronoUnit YEAR                    MONTH_OF_YEAR        DAY_OF_MONTH DAY_OF_WEEK DAY_OF_YEAR          HOUR_OF_DAY     24小时制hour HOUR_OF_AMPM    12小时制hour AMPM_OF_DAY     0(AM),1(PM)  MINUTE_OF_HOUR MINUTE_OF_DAY SECOND_OF_MINUTE SECOND_OF_OF_DAY  OFFSET_SECOND     UTF流逝秒数 MILLI_OF_SECOND MILLI_OF_DAY NANO_OF_SECOND NANO_OF_DAY  FOREVER     CENTURIES  YEARS MONTHS WEEKS DAYS  HOURS MINUTES SECONDS NANOS

使用示例

import java.time.*;import java.time.temporal.ChronoField;import java.time.temporal.ChronoUnit;.....//构建LocalDateTime        LocalDateTime dateTime1 = LocalDateTime.now();        LocalDateTime dateTime2  = LocalDateTime.of(2017,1,1,0,0,0);        System.out.println("datetime1:"+dateTime1+"\ndatetime2:"+dateTime2);

//修改LocalDateTime数值        LocalDateTime dateTime3 = dateTime1.with(ChronoField.YEAR,1992).with(ChronoField.MONTH_OF_YEAR,9).with(ChronoField.DAY_OF_MONTH,16);        System.out.println("datetime3:"+dateTime3);

//获取LocalDateTime数值        int year_dateTime3 = dateTime3.get(ChronoField.YEAR);        Month month_dateTime3 = dateTime3.getMonth();        int day_dateTime3 = dateTime3.get(ChronoField.DAY_OF_MONTH);        System.out.println("year:"+year_dateTime3+"\nmonth:"+month_dateTime3+"\nday:"+day_dateTime3);

//对LocalDateTime进行数值增减        LocalDateTime dateTime4 = dateTime3.plus(10,ChronoUnit.MONTHS).plusDays(100).plusHours(120);        System.out.println("datetime4:"+dateTime4);        System.out.println("datetime4:"+dateTime4.toEpochSecond(ZoneOffset.UTC));

//将LocalDateTime装载到LocalDate和LocalTime        LocalDate date1 = dateTime4.toLocalDate();        LocalTime time1 = dateTime4.toLocalTime();        System.out.println("date1:"+date1);        System.out.println("time1:"+time1);

输出结果:

datetime1:2017-02-28T19:42:09.550datetime2:2017-01-01T00:00datetime3:1992-09-16T19:42:09.550year:1992month:SEPTEMBERday:16datetime4:1993-10-29T19:42:09.550datetime4:751923729date1:1993-10-29time1:19:42:09.550

构造一个日期类java_Java8 新日期时间类(1)相关推荐

  1. java web日期_java-web——第十一课 时间类

    前言: 在我们学习java web之中,实体类的属性经常会遇到时间类 时间类也是一个很重要的类, 首先我们先了解一下经常使用的时间类 经常使用的时间类也就是这三个类 具体的可以查阅api 我们这章主要 ...

  2. java instant获取微秒转成日期格式_Java8新特性时间日期库DateTime API及示例

    点击上方蓝字关注「程序新视界」 Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理.同样的,如果你现在依旧在项目中使用传统Date.Calendar和Simp ...

  3. JDK8新的时间类LocalDateTime,LocalTime,LocalDate使用笔记

    JAVA8出的新的时间日期API都是线程安全的,并且性能更好,代码更简洁! LocalDate.LocalTime.LocalDateTime是新API里的基础对象,绝大多数操作都是围绕这几个对象来进 ...

  4. java8时间类的好处_Java8——时间类

    一套新的时间API,放在java.time包下面 比之前的更加规范,并且解决了线程安全问题(最大区别) 线程安全问题 public classSimpleDateFormatTest {public ...

  5. 4.(简答题,25.0分) (20分)(1)定义一个新冠病毒类Virus,定义一个德尔塔病毒类(Delta)和奥密克戎病毒类(Omicron),这两个类是新冠病毒类的子类;定义一个“可抵御地”接口,德

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...

  6. java 8 optional 类,Java8新特性-Optional类

    Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念.并且可以避免空指 ...

  7. 常用类 (五) ----- Date日期类和Calender日历类

    相关文章: <常用类 (一) ----- Arrays数组工具类> <常用类 (二) ----- Math类> <常用类 (三) ----- BigDecimal和Big ...

  8. Java8新特性 - LocalTime 时间类的基本使用

    1.说明 LocalTime 是 Java8 中新增的 时间类,主要包含了 小时.分钟.秒.纳秒 四个属性. LocalTime类中提供了丰富的API,帮助我们更加简便的操作时间对象. 2.常用API ...

  9. Java 时间类汇总

    Java 7 六个时间类 时间类的介绍与对比 类名称 时间格式 java.util.Date(父类) 年月日时分秒 java.sql.Date(子类) 年月日 java.sql.Time(子类) 时分 ...

最新文章

  1. Centos7 编译安装 Nginx、MariaDB、PHP
  2. Android Studio查找或设置函数注释的快捷键
  3. 赶集网人事调整:三月内两副总离职
  4. oracle 中的闪回
  5. 38 | 案例篇:怎么使用 tcpdump 和 Wireshark 分析网络流量?
  6. 路由器WIFI连接无法正常访问个别网站及发送图片
  7. leetcode114. 二叉树展开为链表
  8. Matlab Tricks(六)—— 矩阵乘法的实现
  9. 微软的软件下载,MSDN下载(方便,无广告,仅提供下载)
  10. 查询正在使用的用户(删除用户时)
  11. 算法-经典趣题-爱因斯坦阶梯问题
  12. Eigen内存分配器aligned_allocator
  13. @OnetoOne @OnetoMany @ManyToOne(2)
  14. 两化融合贯标之-申请表案例
  15. 柔性机械臂_Soft robotics:香港大学研发全新柔性驱动方式为仿生机器人设计提供新思路!...
  16. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数014,tuple,元组
  17. 电脑花屏死机怎么办?
  18. 秋招能有多卷?看完这篇文章你就懂了
  19. 图形处理之补洞vtkFillHolesFilter
  20. 运维救火必备:问题排查与系统优化手册(结合惨案现身说法)

热门文章

  1. Activt工作流数据库对应表的作用
  2. 【Redis】配置redis主从复制
  3. 【转】提示框第三方库之MBProgressHUD iOS toast效果 动态提示框效果
  4. Spark SQL 源代码分析系列
  5. Server-Side UI Automation Provider - WinForm Sample
  6. 众论英特尔虚拟化之VMware篇
  7. PB初体验 class one
  8. 自定义windows开机声音
  9. PHP7实战开发简单CMS内容管理系统(8)登录权限控制功能分离
  10. 7-21 求前缀表达式的值