getNano
获取当前Duration对应的纳秒数“零头” 。注意这里与toNanos()不一样,toNanos是Duration值的纳秒单位总长度,getNano()只是获取不满1s剩余的那个零头,以纳秒表示 。
isNegative
检查Duration实例是否小于0,若小于0返回true, 若大于等于0返回false
isZero
用于判断当前的时间间隔值是否为0,比如比较两个时间是否一致,可以通过between计算出Duration值,然后通过isZero判断是否没有差值 。
withSeconds
对现有的Duration对象的nanos零头值不变的情况下,变更seconds部分的值,然后返回一个新的Duration对象
withNanos
对现有的Duration对象的seconds值不变的情况下,变更nanos部分的值,然后返回一个新的Duration对象
关于Duration的主要API的使用,参见如下示意:
public void testDuration() {LocalTime target = LocalTime.parse("00:02:35.700");// 获取当前日期,此处为了保证后续结果固定,注掉自动获取当前日期,指定固定日期// LocalDate today = LocalDate.now();LocalTime today = LocalTime.parse("12:12:25.600");// 输出:12:12:25.600System.out.println(today);// 输出:00:02:35.700System.out.println(target);Duration duration = Duration.between(target, today);// 输出:PT12H9M49.9SSystem.out.println(duration);// 输出:43789System.out.println(duration.getSeconds());// 输出:900000000System.out.println(duration.getNano());// 输出:729System.out.println(duration.toMinutes());// 输出:PT42H9M49.9SSystem.out.println(duration.plusHours(30L));// 输出:PT15.9SSystem.out.println(duration.withSeconds(15L));}
文章插图
- Period
文章插图
常用的API方法列举如下:
描述
between
计算两个日期之间的时间间隔 。注意,这里只能计算出相差几年几个月几天 。
ofXxx
of()或者以of开头的一系列static方法,用于基于传入的参数构造出一个新的Period对象
withXxx
以with开头的方法,比如withYears、withMonths、withDays等方法,用于对现有的Period对象中对应的年、月、日等字段值进行修改(只修改对应的字段,比如withYears方法,只修改year,保留month和day不变),并生成一个新的Period对象
getXxx
读取Period中对应的year、month、day字段的值 。注意下,这里是仅get其中的一个字段值,而非整改Period的不同单位维度的总值 。
plusXxx
对指定的字段进行追加数值操作
minusXxx
对指定的字段进行扣减数值操作
isNegative
检查Period实例是否小于0,若小于0返回true, 若大于等于0返回false
isZero
用于判断当前的时间间隔值是否为0,比如比较两个时间是否一致,可以通过between计算出Period值,然后通过isZero判断是否没有差值 。
关于Period的主要API的使用,参见如下示意:
public void calculateDurationDays() {LocalDate target = LocalDate.parse("2021-07-11");// 获取当前日期,此处为了保证后续结果固定,注掉自动获取当前日期,指定固定日期// LocalDate today = LocalDate.now();LocalDate today = LocalDate.parse("2022-07-08");// 输出:2022-07-08System.out.println(today);// 输出:2021-07-11System.out.println(target);Period period = Period.between(target, today);// 输出:P11M27D,表示11个月27天System.out.println(period);// 输出:0,因为period值为11月27天,即year字段为0System.out.println(period.getYears());// 输出:11,因为period值为11月27天,即month字段为11System.out.println(period.getMonths());// 输出:27,因为period值为11月27天,即days字段为27System.out.println(period.getDays());// 输出:P14M27D,因为period为11月27天,加上3月,变成14月27天System.out.println(period.plusMonths(3L));// 输出:P11M15D,因为period为11月27天,仅将days值设置为15,则变为11月15天System.out.println(period.withDays(15));// 输出:P2Y3M44DSystem.out.println(Period.of(2, 3, 44));}
文章插图
Duration与Period踩坑记Duration与Period都是用于日期之间的计算操作 。Duration主要用于秒、纳秒等维度的数据处理与计算 。Period主要用于计算年、月、日等维度的数据处理与计算 。
先看个例子,计算两个日期相差的天数,使用Duration的时候:
推荐阅读
- 计算机密码破解方法
- 数学很差能学计算机吗?
- 跳表在Java中的实现
- 生活小窍门美白
- 大学生|丈母娘中意的“女婿职业”排名,榜首意料之中,公务员没进前3
- 中成药|辅警夏季招聘正式开启,面向3类人优先招录,有五险一金!
- 央行|上半年住户存款创近年同期新高 为啥中国人更爱存钱了?专家释疑
- 京东|2022财富中国500强榜单发布:京东第七 蔚来首次上榜
- 未来革命性的五大核心技术,中国目前处于什么水平?
- 世界上手机号码最长的国家是哪个?