java8 Duration类学习

Duration类

官网地址

基于时间的时间量,例如“34.5秒”。

此类以秒和纳秒为单位对时间的量或量进行建模。它可以使用其他基于持续时间的单位访问,如分钟和小时。此外,可以使用DAYS单位,并将其视为完全等于24小时,从而忽略夏令时的影响。有关此类基于日期的等效项,请参见期间。

物理持续时间可以是无限长的。为了实用,使用类似于Instant的约束来存储持续时间。持续时间使用纳秒分辨率,在长时间内可以保持的最大值为秒。这比目前估计的宇宙年龄还要大。

持续时间的范围需要存储一个大于长的数字。为了实现这一点,该类存储一个表示秒的long和一个表示纳秒秒的int,该值始终在0和999999999之间。该模型具有定向持续时间,这意味着该持续时间可能是负的。

持续时间以“秒”为单位,但这些不一定与基于原子钟的科学“SI秒”定义相同。这种差异只影响在闰秒附近测量的持续时间,不应影响大多数应用程序。请参阅即时讨论第二个和时间刻度的含义。

这是一个基于价值的类;在Duration实例上使用标识敏感操作(包括引用相等(==)、标识哈希代码或同步)可能会产生不可预测的结果,应避免。应使用equals方法进行比较。

实施要求:

这个类是不可变的并且是线程安全的。

按照上图可以查看Duration类。

Duration实现了 TemporalAmount, Comparable<Duration>, Serializable 这几个接口。

方法摘要

方法声明功能描述
between(Temporal startInclusive,TemporalendExclusive)获取一个 Duration 实例,表示两个时间对象之间的间隔
toDays()将时间间隔转换为以天为单位
toHours()将时间间隔转换为以时为单位
toMinutes()将时间间隔转换为以分为单位
toSeconds()将时间间隔转换为以秒为单位
toMillis()将时间间隔转换为以毫秒为单位
toNanos()将时间间隔转换为以纳秒为单位
of(long duration)这个方法用于创建一个表示给定持续时间的Duration对象,单位为纳秒。持续时间可以是从零到Long.MAX_VALUE之间的任何值。
of(long amount, TemporalUnit unit)用于创建表示特定时间单位的持续时间对象。该方法接受两个参数:amount:表示持续时间的长整型数值。unit:表示时间单位的 TemporalUnit 枚举类型或其子类。
ofDays(long days)这个方法用于创建一个表示给定天数的Duration对象
ofHours(long hours)这个方法用于创建一个表示给定小时数的Duration对象。
ofMinutes(long minutes)这个方法用于创建一个表示给定分钟数的Duration对象。
ofSeconds(long seconds)这个方法用于创建一个表示给定秒数的Duration对象
ofMillis(long millis)这个方法用于创建一个表示给定毫秒数的Duration对象
ofNanos(long nanos)这个方法用于创建一个表示给定纳秒数的Duration对象。
plus(...) 用于将当前Duration对象与另一个Duration对象相加,返回一个新的Duration对象,表示两个时间段的总和。
plusDays(...)用于将当前Duration对象与指定的天数相加,返回一个新的Duration对象,表示增加天数后的时间段。
plusHours(...)用于将当前Duration对象与指定的小时数相加,返回一个新的Duration对象,表示增加小时数后的时间段。
plusMinutes(...)用于将当前Duration对象与指定的分钟数相加,返回一个新的Duration对象,表示增加分钟数后的时间段。
plusSeconds(...)用于将当前Duration对象与指定的秒数相加,返回一个新的Duration对象,表示增加秒数后的时间段。
plusMillis(...)用于将当前Duration对象与指定的毫秒数相加,返回一个新的Duration对象,表示增加毫秒数后的时间段。
plusNanos(...)用于将当前Duration对象与指定的纳秒数相加,返回一个新的Duration对象,表示增加纳秒数后的时间段。
minus(...)     用于从一个Duration对象中减去另一个Duration对象。它返回一个新的Duration对象,表示当前Duration对象与减去的那一个之间的差值。
minusDays(...)   用于从一个Duration对象中减去一定数量的天数。它返回一个新的Duration对象,表示当前Duration对象减去指定天数后的结果。
minusHours(...)  用于从一个Duration对象中减去一定数量的小时数。它返回一个新的Duration对象,表示当前Duration对象减去指定小时数后的结果。
minusMinutes(...)用于从一个Duration对象中减去一定数量的分钟数。它返回一个新的Duration对象,表示当前Duration对象减去指定分钟数后的结果。
minusSeconds(...)用于从一个Duration对象中减去一定数量的秒数。它返回一个新的Duration对象,表示当前Duration对象减去指定秒数后的结果。
minusMillis(...) 用于从一个Duration对象中减去一定数量的毫秒数。它返回一个新的Duration对象,表示当前Duration对象减去指定毫秒数后的结果。
minusNanos(...)  用于从一个Duration对象中减去一定数量的纳秒数。它返回一个新的Duration对象,表示当前Duration对象减去指定纳秒数后的结果。

示例代码

import java.time.Duration;
import java.time.LocalDateTime;public class DurationUtil {public static void main(String[] args) {LocalDateTime start = LocalDateTime.now();LocalDateTime end = LocalDateTime.parse("2024-03-15T00:00:01");Duration duration = Duration.between(start, end);String timeString = duration.toString();System.out.println("相差的天数:  " + duration.toDays());System.out.println("相差的小时: " + duration.toHours());System.out.println("相差的分钟: " + duration.toMinutes());System.out.println("相差的秒数: " + duration.getSeconds());System.out.println("相差的毫秒: " + duration.toMillis());System.out.println("相差的纳秒: " + duration.toNanos());System.out.println("timeString时间: " + timeString);}}

输出结果

相差的天数:  45
相差的小时: 1089
相差的分钟: 65345
相差的秒数: 3920737
相差的毫秒: 3920737222
相差的纳秒: 3920737222000000
timeString时间: PT1089H5M37.222S




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/439721.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web wifi配网和模式切换-esp8266和esp32

web wifi配网和模式切换-esp8266和esp32 支持模式:1:tcp client() 2:tcp server 3:http server(POST/GET) 4:http client 5:udp,6:factory,7:mqtt 配网进入方式&#xff1a; 开机&#xff0c;指示灯亮起后(需要灯闪烁3下后)&#xff0c;需在3s内&#xff08;超过3s则会正常启动…

C++ QT入门1——记事本基础功能实现(基本控件布局+信号与槽+文件类操作)

C QT入门1——记事本基础功能实现&#xff08;基本控件布局信号与槽文件类操作&#xff09; 一、UI界面的基础设置样式表通用配置通过样式表设置按钮三态以图片作为按钮背景 二、按键响应——☆信号与槽信号与槽基本概念按键QPushButton设置信号与槽自定义信号与槽自定义信号与…

快速理解MoE模型

最近由于一些开源MoE模型的出现&#xff0c;带火了开源社区&#xff0c;为何&#xff1f;因为它开源了最有名气的GPT4的模型结构&#xff08;OPEN AI&#xff09;&#xff0c;GPT4为何那么强大呢&#xff1f;看看MoE模型的你就知道了。 MoE模型结构&#xff1a; 图中&#xff0…

【总线接口】3.常见总线、接口GPIO、I2C、SPI、I2S、Modbus

初接触硬件&#xff0c;五花八门的总线、接口一定会让你有些疑惑&#xff0c;我尝试用一系列文章来解开你的疑惑。 系列文章 【总线接口】1.以Xilinx开发板为例&#xff0c;直观的认识硬件接口 【总线接口】2.学习硬件这些年接触过的硬件接口、总线 大汇总 【总线接口】3.常见…

ES6.8.6 Java客户端发起 增删改查 query (bool)、update、delete

文章目录 环境测试数据增单个新增批量新增 删通过delete by api删除通过delete by query api删除删除索引中指定字段&#xff08;script&#xff09; 改单个修改update by api通过_bulk批量修改批量修改update by query api使用script脚本修改 查完全匹配&#xff08;term&…

MySQL原理(一)架构组成(2)逻辑模块组成

总的来说&#xff0c;MySQL可以看成是二层架构&#xff0c;第一层我们通常叫做SQL Layer&#xff0c;在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的&#xff0c;包括权限判断&#xff0c;sql解析&#xff0c;执行计划优化&#xff0c;query cache的处理等等&…

【web安全】文件上传漏洞

upload-labs靶场 第一关 绕过前端 先打开哥斯拉&#xff0c;生成木马&#xff0c;选择php 打开brup开浏览器&#xff0c;上传文件&#xff0c;就会发现被阻止了&#xff0c;还没抓到包呢 那就是被前端代码阻止了&#xff0c;那通常前端代码都只能防御后缀名 我们抓到包后直…

vuex store,mutations,getters,actions

文章目录 1.vuex概述2.构建vuex【多组件数据共享】环境Son1.vueSon2.vueApp.vue 3.创建一个空仓库4.如何提供&访问vuex的数据①核心概念 - state状态1.通过store直接访问2.通过辅助函数简化代码 ②核心概念 - mutations&#xff08;粗略&#xff09; 5.核心概念 - mutation…

前端大屏展示可视化——地图的绘制(持续更新)

一、ECharts 1、安装 npm install echarts2、引入 import * as echarts from echarts;3、渲染 3.1、前期准备&#xff0c;基础配置 // 地图实例 const myChart ref(null); // 地图配置 const option reactive({tooltip: {trigger: item,formatter: function (params) {re…

2024年新提出的算法:(凤头豪猪优化器)冠豪猪优化算法Crested Porcupine Optimizer(附Matlab代码)

本次介绍一种新的自然启发式元启发式算法——凤头豪猪优化器(Crested Porcupine Optimizer&#xff0c;CPO)。该成果于2024年1月发表在中科院1区SCI top期刊Knowledge-Based Systems&#xff08;IF 8.8&#xff09;上。 1、简介 受到凤头豪猪&#xff08;CP&#xff09;各种…

使用Hutool工具包解析、生成XML文件

说明&#xff1a;当我们在工作中需要将数据转为XML文件、或者读取解析XML文件时&#xff0c;使用Hutool工具包中的XMLUtil相关方法是最容易上手的方法&#xff0c;本文介绍如何使用Hutool工具包来解析、生成XML文件。 开始之前&#xff0c;需要导入Hutool工具包的依赖 <de…

1688平台商品详情数据的采集|Python实现接口调用【1688平台商品】数据采集

前言 1688平台是阿里巴巴集团推出的B2B电子商务平台。该平台于1999年上线&#xff0c;旨在为国内外买家提供海量优质商品和供应商资源&#xff0c;帮助企业进行采购和销售业务。1688平台主要面向中小型企业和个体工商户&#xff0c;提供了各行各业的产品和服务。 在1688平台上…