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. C语言 memcpy二维数组的复制

    今天在实现二维数组的复制功能时,竟然出现了好多问题,还是太不小心了. 我们知道,平时进行矩阵复制,无非是二重循环进行赋值操作,所以今天想改用利用memcpy进行复制操作,当然一维数组的复制在上一篇文章 ...

  2. select中的文字垂直居中的问题

    select文字在默认和边框高度增加时 是默认居中的.你要是不想居中的话可以用padding值调整.但是右侧的三角不会改变. select在高度减小时.字体是不会垂直居中的.无论你用什么他都不会垂直居 ...

  3. Odoo安装

    打开终端机0. sudo passwd root #设定超级使用者密码1. sudo apt-get update #更新软件源2. sudo apt-get dist-upgrade #更新软件包, ...

  4. 【Zookeeper】源码分析之请求处理链(一)

    一.前言 前面已经分析了Watcher机制的主要代码,现在接着分析Zookeeper中的请求处理链,其是Zookeeper的主要特点之一. 二.总体框图 对于请求处理链而言,所有请求处理器的父接口为R ...

  5. C#表达式和语句

    表达式由操作数 (operand) 和运算符 (operator) 构成.表达式的运算符指示对操作数适用什么样的运算.运算符的示例包括+.-.*./ 和 new.操作数的示例包括文本.字段.局部变量和 ...

  6. Ant学习总结1

    一.Ant简介 Ant是用来编译/运行/测试java程序,构建.包装和发布过程中几乎每一件事都可以由Ant的任务来处理. 二.Ant管理项目    当开始一个新的项目时,首先应该编写Ant的构建文件, ...

  7. 使用秘钥连接ssh

    ssh服务器搭建 通过秘钥登陆连接另外一台虚拟机 创建证书  ssh-keygen -t rsa 第一行密钥保存位置直接输入回车 确定默认创建位置为 /root/.ssh 公钥必须改名为  autho ...

  8. IOS设备对position的支持性

    最近在开发一个网页. 要嵌套在微信里 大家都知道 IOS版微信和安卓版微信还是一定的差距 IOS版微信在打开网页的时候回调取自己的浏览器以及内核 但是安卓版微信不会,他会默认使用自己的QQ浏览器和X5 ...

  9. Laravel的ORM入门

    源码目录在\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Relations下 关系:一对多(One To Many) 场景:每篇 ...

  10. 基于react+react-router+redux+socket.io+koa开发一个聊天室

    最近练手开发了一个项目,是一个聊天室应用.项目虽不大,但是使用到了react, react-router, redux, socket.io,后端开发使用了koa,算是一个比较综合性的案例,很多概念和 ...