JDK中日期和时间的几个常用类浅析(四)
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中日期和时间的几个常用类浅析(四)的更多相关文章
- JDK中日期和时间的几个常用类浅析(二)
java.util.Calendar JDK中的java.util.Calendar类主要是用来处理日期和时间相关的算法运算.当你需要做一些关于日期和时间的高级算数操作时,此类可能就是你的最好选择 ...
- JDK中日期和时间的几个常用类浅析(五)
LocalDateTime LocalDateTime是JDK8中才引入的类,用来表示不包含时区信息的本地日期和时间.我们可以把LocalDateTime看作是LocalDate和LocalTim ...
- JDK中日期和时间的几个常用类浅析(三)
java.text.SimpleDateFormat SimpleDateFormat类是用于把字符串解析成日期时间和把日期时间格式化成字符串的工具类.该类主要和java.util.Date类配合 ...
- Python中日期和时间格式化输出的方法
本文转自:https://www.jb51.net/article/62518.htm 本文实例总结了python中日期和时间格式化输出的方法.分享给大家供大家参考.具体分析如下: python格式化 ...
- 5 个关于 API 中日期和时间设计规则
规则 #1 使用ISO-8601格式作为你的日期格式 ISO 8601 解决了很多问题,包括: 自然排序 - 简单和优雅,免去多余的工作即可实现排序 时区偏移 - 代表用户的地点和时区在日益增长的全球 ...
- PHPExcel对于Excel中日期和时间类型的处理
PHPExcel是一款优秀的处理Excel文件读写的开源PHP Library,能够给我们提供强大的Excel读写能力,本文针对Excel处理过程中关于日期和时间类型的处理进行深入的讨论.PHPExc ...
- SqlServer中日期和时间数据类型及函数 【转】
来源:http://blog.csdn.net/royalwzy/article/details/6446075 日期和时间数据类型 下表列出了 Transact-SQL 的日期和时间数据类型. 数据 ...
- JAVA中日期和时间的格式化选项
一.使用printf方法 import java.util.Date; import java.util.Scanner; public class Test { public static void ...
- Oracle中日期和时间类函数
首先,在oracle中如何表示日期 操作日期时,应使用to_date('date','dateType')函数得到date类型,其中date为任意格式的日期,dateType指定其格式,如to_dat ...
随机推荐
- 匹配PC和移动端
方法1: var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; ret ...
- HDU 4256 The Famous Clock
The Famous Clock Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 一个技术汪的开源梦 —— 微信开发工具包(WeixinSDK)
由于春节的关系 WeixinSDK 这个开源项目的进展比预期推迟了大约一个月的时间,值得高兴的是到目前为止该项目的重要模块已经开发完毕. - 关于项目 该项目的背景是现在微信公众号.微信服务号乃至微 ...
- 前端总结·基础篇·CSS(一)布局
目录 这是<前端总结·基础篇·CSS>系列的第一篇,主要总结一下布局的基础知识. 一.显示(display) 1.1 盒模型(box-model) 1.2 行内元素(inline) &am ...
- ABP入门系列(11)——编写单元测试
ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 前言 In computer programming, unit testing is a ...
- Extjs 数据代理
Ext.data.proxy.Proxy 代理类的根类 客户端代理: 1.LocalStorageProxy:将数据存储在localStorage中,此种方式可以持久的将数据存储在客户端 要使用代理, ...
- git链接GitHub命令及基本操作
Git是一款不错的代码管理工具,下面引用百科的一段话: Git是用于Linux内核开发的版本控制工具.与CVS.Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服 ...
- 自动化测试 -- 通过Cookie跳过登录验证码
之前写过一篇博客:自动化测试如何解决验证码的问题. http://www.cnblogs.com/fnng/p/3606934.html 介绍了验证码的几种处理方式,最后一种就是通过Cookie跳转过 ...
- NSRunLoop原理详解——不再有盲点
编程最怕的就是有盲点,不确定,而runloop官网对其提及的又很少:那么看完这篇应该使你有底气很多~ RunLoop整体介绍 An event-processing loop, during whic ...
- Mac上写C++
用惯Windows的同学可能刚开始用Mac的时候并不知道如何写C++,我刚开始在Mac上写C++的时候也遇到过这个困扰,Mac上并没有Windows上自己用习惯的Visual C++,下面我分享一下个 ...