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.mzph.cn/news/656197.shtml

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

相关文章

C语言第十三弹---VS使用调试技巧

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 VS调试技巧 1、什么是bug 2、什么是调试&#xff08;debug&#xff09;&#xff1f; 3、Debug和Release​编辑​ 4、VS调试快捷键 4.1、环境准备 4.2、调试…

python--文件读取与写入

"""1、文件的读取(1)读取文件&#xff1a;open1、file&#xff1a;指定文件的路径路径可以分成相对路径和绝对路径2、mode&#xff1a;指定文件的读取的的模式&#xff1a;1、r open for reading (default) 表示的是读模式2、w open for writing, t…

计算机毕业设计 | SpringBoot+vue学生成绩管理系统教务管理系统

1&#xff0c;项目背景 随着我国高等教育的发展&#xff0c;数字化校园将成为一种必然的趋势&#xff0c;国内高校迫切需要提高教育工作的质量与效率&#xff0c;学生成绩管理工作是高校信息管理工作的重要组成部分&#xff0c;与国外高校不同&#xff0c;他们一般具有较大规模…

快来建服组队一起捕捉帕鲁

2024年初最火的steam游戏《幻兽帕鲁》&#xff0c;大家都已经玩上了吧&#xff1f; 如何跟朋友组队一起在广阔的世界中捕捉神奇的生物“帕鲁”&#xff0c;快来金山云解锁吧~ 第一步&#xff1a;创建游戏服务器 部署一台幻兽帕鲁云服务器&#xff1a;在控制台上选择离您更近…

在Windows11的WSL上运行Llama2-7b-chat 下

上一篇博客讲了我跑Llama的demo的心路历程&#xff08;上一篇博客传送门&#xff09;&#xff0c;这篇我们主要是讲下怎么配置。 快速开始 使用Linux、Linux、Linux&#xff0c;重要的事情说三遍&#xff0c;如果你和我一样懒得安装双系统&#xff0c;那么在Windows下安装一个…

【Pytorch 第三讲】如何使用pre-trained weights 来训练自己的模型

# 理由# 有时在训练自己的模型时&#xff0c;如果从头开始训练自己的模型&#xff0c; 不但费时费力&#xff0c; 有时可能训练了很久&#xff0c; 好不容易收敛&#xff0c; 发现结果不是太好。 如果能够基于被人 已经训练好的权重&#xff0c; 初始化自己的模型。那么在训练…

二百二十一、HiveSQL报错:return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

一、目的 在运行HiveSQL时&#xff0c;执行报错 tatement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 二、在yarn上查看任务报错 The required MAP capability is more than the supported max container capability in t…

synchronized 和 ReentrantLock 的区别

synchronized 和 ReentrantLock 都是 Java 中的同步机制&#xff0c;用于确保在多线程环境下&#xff0c;同一时刻只有一个线程能够访问特定的代码块、方法或对象。它们的区别在于实现方式和性能上。 synchronized、ReentrantLock synchronized示例 ReentrantLock可重入公平性示…

使用流服务器m7s对接gb28181

优:sip品牌兼容性比较好,大华,海康都稳定可以,srs的5.0 sip品牌兼容性大华没反应,akstream-sip 大华也有问题,wvp也还可以 缺:目前最新的4.7.4版本,,sip协议用udp正常,TCP不正常(估计不支持),移动、事件,预警不支持 一、下载对应的m7s的执行文件 官网:快速起步…

Android开发中自定义View实现RecyclerView下划线

本篇文章主要讲解的是有关RecyclerView下划线的使用&#xff0c;主要有几个方法&#xff0c;具体如下&#xff1a; 第一种方式&#xff1a;网格分割线 public class GridDivider extends RecyclerView.ItemDecoration { private Drawable mDividerDarwable; private i…

深入理解c语言printf

printf(格式控制&#xff0c;输出列表); printf的使用方法大全 #include<stdio.h> int main(){double a123.111;int m-156;char csA;char *str"%d,%d";printf("%d",100,1);return 0; }

TextCNN的复现

TextCNN的复现–pytorch的实现 对于TextCNN的讲解&#xff0c;可以参考这篇文章 Convolutional Neural Networks for Sentence Classification - 知乎 (zhihu.com) 接下来主要是对代码内容的详解&#xff0c;完整代码将在文章末尾给出。 使用的数据集为电影评论数据集&…

(五)MySQL的备份及恢复

1、MySQL日志管理 在数据库保存数据时&#xff0c;有时候不可避免会出现数据丢失或者被破坏&#xff0c;这样情况下&#xff0c;我们必须保证数据的安全性和完整性&#xff0c;就需要使用日志来查看或者恢复数据了 数据库中数据丢失或被破坏可能原因&#xff1a; 误删除数据…

idea破解方法

idea破解&#xff1a;IDEA 2023.2.5 最新激活码,注册码&#xff08;亲测好用&#xff09;

GitHub 开启 2FA 双重身份验证的方法

为什么要开启 2FA 自2023年3月13日起,我们登录 GitHub 都会看到一个要求 Enable 2FA 的重要提示,具体如下: GitHub users are now required to enable two-factor authentication as an additional security measure. Your activity on GitHub includes you in this requi…

vivado 硬块规划器

硬块规划器 Versal自适应SoC的硬块规划GT组件从通用/通道更新为AMD的GT_QUAD粒度Versal™ 自适应SoC。为了启用某些GT共享用例&#xff0c;对GT向导流进行了修改使用Vivado IP集成商。使用Vivado IP集成商构建使用单个或多个GT_ QUAD。连接到GT_QUAD的自定义IP的设计条目为通过…

认知篇:什么是逆转诅咒?一个提问GPT的错误姿势

本系列文章主要是分享一些关于大模型的一些学术研究或者实验性质的探索&#xff0c;为大家更新一些针对大模型的认知。所有的结论我都会附上对应的参考文献&#xff0c;有理有据&#xff0c;也希望这些内容可以对大家使用大模型的过程有一些启发。 注&#xff1a;本系列研究关注…

养猫家庭如何挑选宠物空气净化器?猫用空气净化器品牌推荐!

家里的猫咪真的太可爱了&#xff0c;但它们的毛发总是无处不在。而且猫砂盆一天不清理&#xff0c;整个屋子都会弥漫着臭味。每天打扫也很费时费力&#xff0c;虽然享受着猫咪带来的快乐&#xff0c;但也不得不面对这些困扰。 一直以来&#xff0c;我都想购买一台空气净化器&a…

宠物处方单子怎么开,宠物门诊处方管理软件教程

宠物处方单子怎么开&#xff0c;宠物门诊处方管理软件教程 一、前言 宠物店电子处方软件操作教程以 佳易王宠物店电子处方管理系统V16.0为例说明。 如图&#xff0c;在开处方的时候&#xff0c;点击导航栏菜单&#xff0c;兽医处方按钮 点击 增加新单&#xff0c;填写宠物及…

Security ❀ HTTP/HTTPS逐包解析交互过程细节

文章目录 1. TCP三次握手机制2. HTTP Request 请求报文3. HTTP Response 响应报文4. SSL/TLS协议4.1. ClientHello 客户端Hello报文4.2 ServerHello 服务器Hello报文4.3. *ServerKeyExchange 服务公钥交换4.4. ClientKeyExchange 客户端公钥交换4.5. *CertificateVerify 证书验…