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




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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

5-1 A. DS串应用--KMP算法

题目描述 学习KMP算法&#xff0c;给出主串和模式串&#xff0c;求模式串在主串的位置 算法框架如下&#xff0c;仅供参考 输入 第一个输入t&#xff0c;表示有t个实例 第二行输入第1个实例的主串&#xff0c;第三行输入第1个实例的模式串 以此类推 输入样例&#xff1a; 3 qwe…

2024-01-29 ubuntu 用脚本设置安装交叉编译工具链路径方法,设置PATH环境变量

一、设置PATH环境变量的方法,建议用~/.bash_profile的方法&#xff0c;不然在ssh登录的时候可能没有设置PATH. 二、下面的完整的脚本&#xff0c;里面的echo "export PATH$build_toolchain_path:\$PATH" >> $HOME/.bashrc 就是把交叉编译路径写写到.bashrc设置…

回文子字符串的个数

判断一个字符串是否是一个回文除了从两端向里移动指针&#xff0c;也可以采用指针从字符串中心开始向两端延伸。即如果存在一个长度为m的回文子字符串&#xff0c;再分别向该回文两端延伸一个字符&#xff0c;并判断这两个字符是否相同&#xff0c;如果相同则找到了一个长度为m…

腾讯云部署vue+node项目

文章目录 一、安装宝塔二、vue项目部署三、node项目部署 前言: 关于项目部署,一开始也是找了很多资料,费了点时间,所以记录一下。希望能对各位有所帮助。 一、安装宝塔 1.首先在控制台,进入云服务器的终端界面 2.输入命令和密码获取权限,并且安装宝塔界面 yum install -y w…

Vue3下载WEBAPI导出的Excel文件

webApi查询数据保存为Excel /// <summary>/// 获取LMI3D相机涂胶测量数据/// </summary>/// <returns></returns>[HttpPost(Name "GetLMI3DGlueDataToExcel")]public async Task<IActionResult> GetLMI3DGlueDataToExcel(QueryGlueM…

500道微信小程序毕业设计题目,小程序新颖毕业选题推荐,建议收藏

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

CSRF靶场练习

简述&#xff1a;CSRF漏洞实际很少&#xff1b;条件限制很多&#xff1b;局限性很大&#xff1b;实验仅供参考&#xff0c;熟悉csrf概念和攻击原理即可 Pikachu靶场 CSRF GET 登录用户vince的账户可以看到用户的相关信息&#xff1b; 点击修改个人信息&#xff0c;发现数据包…

PawSQL更新 | 新增18个SQL性能审核重写规则

PawSQL最新版本针对DML和DQL新增了审核和重写优化规则共计33个&#xff0c;整体的规则数目达到了83个&#xff0c;覆盖了正确性&#xff0c;安全性、可维护性、性能四个方面的SQL质量问题&#xff0c;并提供了优化建议&#xff0c;已经形成比较完善的针对数据操作的SQL质量审查…

Vertica单点更改服务器ip

需求 服务器网段调整&#xff0c;将ip&#xff1a;192.168.40.190收回&#xff0c;使用ip&#xff1a;192.168.40.200 默认情况下&#xff0c;节点 IP 地址和导出 IP 地址配置相同的 IP 地址。导出地址是网络上有权访问其他 DBMS 系统的节点的 IP 地址。使用导出地址从 DBMS …

CodeFuse新开源模型荣登Big Code评测榜首!

使用多任务高效微调框架MFTCoder&#xff0c;以DeepSeek-Coder-33b模型为底座&#xff0c;微调获得的CodeFuse-DeepSeek-33b模型在Big Code Models Leaderboard代码大模型榜单上以43.58% WinRate成为新晋榜首&#xff0c;同时模型在NLP任务上也取得了很好的表现。本文我们将介绍…

【C++】类与对象(二)特殊成员函数

前言 类与对象&#xff08;二&#xff09; 文章目录 一、特殊成员函数二、构造函数三、析构函数四、拷贝构造函数五、拷贝赋值运算符 一、特殊成员函数 如果在类的声明中未显式提供某个成员函数的定义&#xff0c;编译器会自动生成一个默认实现。 这包括默认构造函数、默认析构…

怎么制作出圈的虚拟数字人城市宣传短片?

如今&#xff0c;中国城市面临一个从To B&#xff08;企业客户&#xff09;、To G&#xff08;政府客户&#xff09;到To C&#xff08;一般客户&#xff09;的转变。其中&#xff0c;城市宣传片作为与C端沟通的最佳途径&#xff0c;一个“吸睛”的城市短片&#xff0c;可以有效…

揭秘支付宝小程序开发:从零到一,轻松掌握开发流程!

目录 1、介绍支付宝小程序开发 1.1 什么是支付宝小程序 1.2 支付宝小程序与其他小程序的区别 1.3 支付宝小程序的优势 2、准备工作 2.1 注册支付宝小程序开发者账号 2.2 下载支付宝小程序开发工具 2.3 了解支付宝小程序的基本概念和架构 3、开发环境搭建 3.1 安装并配…

如何在 Ubuntu 中安装 Microsoft Edge 浏览器

微软终于聪明了一回&#xff0c;也学会了「打不过就加入」。Microsoft Edge 浏览器的 Linux 稳定版已经于 2020 年 10 月 23 日发布&#xff0c;并提供给 Linux 发行版使用。除了官方 Edge APT 源以外&#xff0c;还提供了.deb和.rpm格式的安装包。 Microsoft Edge 基于 Chrom…

深度学习快速入门--7天做项目

深度学习快速入门--7天做项目 0. 引言1. 本文内容2. 深度学习是什么3. 项目是一个很好的切入点4. 7天做项目4.1 第一天&#xff1a;数据整理4.2 第二天&#xff1a;数据处理4.3 第三天&#xff1a;简单神经网络设计4.4 第四天&#xff1a;分析效果与原因4.5 第五天&#xff1a;…

【MyBatis】快速入门MyBatis(保姆式教学),你值得一看

文章目录 &#x1f4c4;前言一. Mybatis简介✈️1. 什么是Mybatis&#x1f680;2. 为什么使用Mybatis 二. Mybatis快速入门&#x1f346;1. mybatis使用前准备1.1 创建springboot项目并引入相关依赖1.2 在 application.ym中进行数据源的配置1.3 创建数据表&#xff0c;准备表数…

【css】自定义列表项标记(图片、符号、表情)

1. 列表项标记是图片 ul{li {list-style: none;padding-left: 20px; /* 设置左边距&#xff0c;以容纳图标 */display: flex;align-items: center;/* 使小图标和文字高度对齐 */}li::before {content: ;display: inline-block;width: 20px; /* 设置容器宽度 */height: 20px; /*…

java学习02运算符

一 算术运算符 1.运算符和表达式 运算符 就是对常量或者变量进行操作的符号 表达式 用运算符把常量或者变量连接起来的&#xff0c;符合Java语法的式子就是表达式。 比如&#xff1a;a b 2.算术运算符 加减乘 package com.itheima.arithmeticoperator;public class Ar…

笔记本从零安装ubuntu系统+多种方式远程控制

文章目录 前言ubuntu启动盘Windows远程Ubuntu安装XrdpXrdp卡顿问题解决Xrdp 二次登录会死机的问题Xrdp 卡顿问题 MobaXtermRustDesk 外网远程VNC 远程SSH远程其它设置 总结 前言 我有台老笔记本&#xff0c;上大学第一年的时候买的&#xff0c;现在已经不怎么好用了。打算刷个…

GNSS定位技术总结与PPP定位技术

1.统一观测值方程 2.PPP方程构建 站间单差方程如下&#xff1a; 同样的&#xff0c;设计矩阵也更加庞大&#xff1a; 站间单差消除了卫星轨道、卫星钟、电离层、对流层以及卫星端的伪距和载波硬件延迟的影响。但在PPP中&#xff0c;我们无法通过站间单差消除这些影响&#xff…