java.time.Instant

  java.time.Instant类对应的是时间线上的一个时间点。该类通过保存着从格林威治的起始时间(1970年一月一日零点零分)开始计算所经过的纳妙数来表示时间点。注意:该类是JDK8中新引入的一系列日期时间相关API中的最基础类。如果需要创建该类的一个实例,需要使用该类的工厂方法,示例如下:

Instant now = Instant.now();

一个Instant实例中包含有两个域,分别代表着秒数和纳秒数。
+ EpochSecond 可正可负,相对于格林威治的起始时间 + Nano 只能为正,少于1秒的纳秒值。Instant类本身提供了很多方法用于算法计算,其中的一些如下:
+ plusSeconds()
+ plusMillis()
+ plusNanos()
+ minusSeconds()
+ minusMillis()
+ minusNanos()

java.time.Duration

  java.time.Duration类用于代表两个Instant对象之间的一段时间。该类同样是JDK8中新引入的。Duration类是不可变类,意味着一个该类的对象一旦生成,该对象就是不可变的。如果需要创建Duration类的对象,直接使用该类的工厂方法就可以了,示例代码如下:

Instant first = Instant.now();
Instant second = Instant.now();
Duration d = Duration.between(first, second);

类似地,一个Duration对象中同样是含有两个域,用来表示一段时间。如果需要访问这两个域变量,可以使用如下的方法:

  • getNano();

  • getSecond();

同时,该类中还提供了方法用于把该对象所代表的一段时间转化成其他单位表示形式。简单举例如下:

  • toNanos();

  • toMillis();

  • toMinutes();

  • toHours();

  • toDays();

此处注意一下get方法与to方法的区别:比如,getNano方法返回的是Duration对象中纳秒部分的值,而toNano方法是把Duration对象整个时间值转换成纳秒值。   正如你所期待的那样,Duration类中含有大量的算术操作方法,可以用来生成新的Duration对象。简单举例如下:

  • plusNanos();

  • plusMillis();

  • minusSeconds();

  • minusDays();

所有的这些算术操作方法都会返回一个新的Duration对象,这样才保证了Duration类是一个不可变类。

java.time.LocalDate

  java.time.LocalDate类同样是在JDK8中新引入的日期时间类。该类用来表示不含时区信息的日期,比如用来表示生日,节日等具体某天,但并不表示该天的具体时间。注意:LocalDate类同样是一个不可变类。如果需要创建该类的对象,可以直接使用该类的工厂方法,示例代码如下:

LocalDate localDate = LocalDate.now();
LocalDate localDate2 = LocalDate.of(2017, 12, 31);

类似的,该类同样包含有相应地域访问和域设置的方法,简单举例如下:

int year = localDate.getYear();
int dayOfMonth = localDate.getDayOfMonth();

LocalDate localDate1 = localDate.plusYears(3);

java.time.LocalTime

  java.time.LocalTime类同样是在JDK8中新引入的日期时间类。该类用来表示不含时区信息的时间,比如用来表示上午10点,下午5点等。 注意:LocalTime类同样是一个不可变类。如果需要创建该类的对象,可以直接使用该类的工厂方法,示例代码如下:

LocalTime localTime = LocalTime.now();
LocalTime localTime2 = LocalTime.of(21, 30, 59, 11001);

类似地,该类同样包含有相应地域访问和域设置的方法,简单举例如下:

LocalTime localTime = LocalTime.now();
localTime.plusHours(3);

我们可以发现,LocalDate和LocalTime是非常相似的,他们分别用来表示不含时区信息的日期和时间。

本系列文档会在本人的微信公众号发布,欢迎大家扫码关注。

                

JDK中日期和时间的几个常用类浅析(四)的更多相关文章

  1. JDK中日期和时间的几个常用类浅析(二)

    java.util.Calendar   JDK中的java.util.Calendar类主要是用来处理日期和时间相关的算法运算.当你需要做一些关于日期和时间的高级算数操作时,此类可能就是你的最好选择 ...

  2. JDK中日期和时间的几个常用类浅析(五)

    LocalDateTime   LocalDateTime是JDK8中才引入的类,用来表示不包含时区信息的本地日期和时间.我们可以把LocalDateTime看作是LocalDate和LocalTim ...

  3. JDK中日期和时间的几个常用类浅析(三)

    java.text.SimpleDateFormat   SimpleDateFormat类是用于把字符串解析成日期时间和把日期时间格式化成字符串的工具类.该类主要和java.util.Date类配合 ...

  4. Python中日期和时间格式化输出的方法

    本文转自:https://www.jb51.net/article/62518.htm 本文实例总结了python中日期和时间格式化输出的方法.分享给大家供大家参考.具体分析如下: python格式化 ...

  5. 5 个关于 API 中日期和时间设计规则

    规则 #1 使用ISO-8601格式作为你的日期格式 ISO 8601 解决了很多问题,包括: 自然排序 - 简单和优雅,免去多余的工作即可实现排序 时区偏移 - 代表用户的地点和时区在日益增长的全球 ...

  6. PHPExcel对于Excel中日期和时间类型的处理

    PHPExcel是一款优秀的处理Excel文件读写的开源PHP Library,能够给我们提供强大的Excel读写能力,本文针对Excel处理过程中关于日期和时间类型的处理进行深入的讨论.PHPExc ...

  7. SqlServer中日期和时间数据类型及函数 【转】

    来源:http://blog.csdn.net/royalwzy/article/details/6446075 日期和时间数据类型 下表列出了 Transact-SQL 的日期和时间数据类型. 数据 ...

  8. JAVA中日期和时间的格式化选项

    一.使用printf方法 import java.util.Date; import java.util.Scanner; public class Test { public static void ...

  9. Oracle中日期和时间类函数

    首先,在oracle中如何表示日期 操作日期时,应使用to_date('date','dateType')函数得到date类型,其中date为任意格式的日期,dateType指定其格式,如to_dat ...

随机推荐

  1. HashSet、LinkedHashSet、TreeSet使用区别

    HashSet:哈希表是通过使用称为散列法的机制来存储信息的,元素并没有以某种特定顺序来存放: LinkedHashSet:以元素插入的顺序来维护集合的链接表,允许以插入的顺序在集合中迭代: Tree ...

  2. jQuery ajax() 参数,回调函数,数据类型,发送数据到服务器,高级选项

    $.ajax({ options:/*类型:Object;  可选.AJAX 请求设置.所有选项都是可选的.*/ async:/*类型:Boolean; 默认值: true.默认设置下,所有请求均为异 ...

  3. 软件测试作业1 — 令我印象最深的BUG

    回顾从大一到大三的学习生活,我在学习过程中遇到过许多BUG,刚开始和罗凯老师学习C++时从来没有接触过编程,那时候导致程序不能运行的原因多是语法错误和拼写错误,到了大一下学期,错误多出现在循环与条件跳 ...

  4. 【转】svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted

    svn提交遇到恶心的问题,可能是因为上次cleanup中断后,进入死循环了. 错误如下 解决方法:清空svn的队列 1.下载sqlite3.exe 2.找到你项目的.svn文件,查看是否存在wc.db ...

  5. 【开源.NET】轻量级内容管理框架Grissom.CMS(第三篇解析配置文件和数据以转换成 sql)

    该篇是 Grissom.CMS 框架系列文章的第三篇, 主要介绍框架用到的核心库 EasyJsonToSql, 把标准的配置文件和数据结构解析成可执行的 sql. 该框架能实现自动化增删改查得益于 E ...

  6. Java设计模式之《观察者模式》及应用场景

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6513651.html 观察者模式,又可以称之为发布-订阅模式,观察者,顾名思义,就是一个监 ...

  7. iOS 原生的 UIButton 点击事件是不允许带多参数的,唯一的一个参数就是默认UIButton本身 那么我们该怎么实现传递多个参数的点击事件呢?

    UIButton *btn = // create the button objc_setAssociatedObject(btn, "firstObject", someObje ...

  8. python服务器环境搭建(1)——本地服务器准备

    去年十月底到新公司上班,由于公司旧系统存在各种问题同时不便于扩展,而公司领导对17年寄予很大的期望,用户量.收入要上一个新台阶,我经过全面评估后,决定全部用python重构过,开发一个基于微服务架构的 ...

  9. Contains Duplicate II leetcode

    Given an array of integers and an integer k, find out whether there are two distinct indices i and j ...

  10. iOS下的界面布局利器-MyLayout布局框架

      Swift:TangramKit: https://github.com/youngsoft/TangramKit OC:MyLayout: https://github.com/youngsof ...