当前位置: 首页 > news >正文

深入了解Java8新特性-日期时间API之TemporalQuery、TemporalQueries

阅读建议

嗨,伙计!刷到这篇文章咱们就是有缘人,在阅读这篇文章前我有一些建议:

  1. 本篇文章大概2000多字,预计阅读时间长需要5分钟。
  2. 本篇文章的实战性、理论性较强,是一篇质量分数较高的技术干货文章,建议收藏起来,方便时常学习与回顾,温故而知新。
  3. 创作不易,免费的点赞、关注,请走上一走,算是对博主一些鼓励,让我更有动力输出更多的干货内容。

注意

本文编写的单元测试是基于java11,具体的版本号是:11.0.19

TemporalQuery

@FunctionalInterface
public interface TemporalQuery<R> {R queryFrom(TemporalAccessor temporal);
}

TemporalQuery是Java 8中用于时间查询的一个函数式接口,它允许用户对日期和时间进行查询。TemporalQuery接口中定义了一些方法,比如queryFrom(TemporalAccessor temporal),该方法允许用户从给定的时间对象中查询特定的时间信息。

TemporalAccessor

TemporalAccessor是一个时间访问器,它提供了一些方法来访问时间信息,比如get(ChronoField field),getLong(ChronoField field),query(TemporalQuery query)等。这些方法可以让用户获取到日期和时间的各个部分,比如年、月、日、时、分、秒等。LocalDate、LocalTime、LocalDateTime都是TemporalAccessor的实现在类。通过TemporalQuery和TemporalAccessor接口,用户可以对日期和时间进行更为精细的控制和操作,以满足各种不同的需求。

TemporalQueries

TemporalQueries是Java中用于时间查询的类,它提供了TemporalQuery的常见实现。此类允许根据策略设计模式采用不同的方法,从临时对象中提取信息的关键工具。

TemporalQueries类中定义了一些方法,比如:

  • static TemporalQuery localDate():查询LocalDate,如果找不到则返回null。
  • static TemporalQuery localTime():查询LocalTime,如果找不到则返回null。
  • static TemporalQuery offset():查询ZoneOffset,如果找不到则返回null。

这些方法可以用于查询时间信息,比如日期、时间、时区偏移量等。通过TemporalQueries类,用户可以更加方便地进行时间查询操作。

TemporalQuery、TemporalQueries使用示例

这里ZonedDateTime为例,先获取一下当前的日期时间的ZonedDateTime实例,如果我想获取一下这个日期时间对象时区的ZoneId,需要怎么办呢?可以这样

@Test
public void test(){ZonedDateTime zonedDateTime=ZonedDateTime.now();TemporalQuery<ZoneId> temporalQuery = TemporalQueries.zoneId();ZoneId zoneId = zonedDateTime.query(temporalQuery);System.out.println(zoneId);//输出结果:Asia/Shanghai
}

如果还想从ZonedDateTime实例中获取一下LocalDate、LocalTime、ZoneOffset对象,怎么办呢?可以这样:

@Test
public void test(){ZonedDateTime zonedDateTime=ZonedDateTime.now();TemporalQuery<ZoneOffset> temporalQuery1 = TemporalQueries.offset();ZoneOffset zoneOffset = zonedDateTime.query(temporalQuery1);System.out.println(zoneOffset);//输出结果:+08:00TemporalQuery<LocalDate> temporalQuery2 = TemporalQueries.localDate();LocalDate localDate = zonedDateTime.query(temporalQuery2);System.out.println(localDate);//输出结果:2023-11-29TemporalQuery<LocalTime> temporalQuery3 = TemporalQueries.localTime();LocalTime localTime = zonedDateTime.query(temporalQuery3);System.out.println(localTime);//输出结果:18:10:40.622423500
}

如果还想从ZonedDateTime实例中获取的目标对象不存在,会异常吗?当然不会,而是会返回null

@Test
public void test2(){TemporalQuery<ZoneOffset> offset = TemporalQueries.offset();LocalDateTime localDateTime=LocalDateTime.now();//本地日期时间是不带时区偏移量的ZoneOffset query = localDateTime.query(offset);//肯定查询不到结果System.out.println(query);//输出结果:null
}

总结

TemporalQueries和TemporalQuery是Java时间库中的两个相关类,它们都用于处理时间查询。

TemporalQueries是一个类,它提供了TemporalQuery的常见实现。这些实现是常量,因为lambda表达式不能保证这一点。通过在这里分配一次,它们变成了“普通的”Java常量。

TemporalQuery是一个接口,它定义了从临时对象中提取信息的关键工具。这些工具的存在是为了使查询过程外化,允许根据策略设计模式采用不同的方法。例如,可以查询日期是否是闰年2月29日前一天的查询,或计算下一个生日的天数。

因此,TemporalQueries和TemporalQuery之间的关系是它们一起提供了一种机制来执行时间查询。TemporalQueries提供了常见的查询实现,而TemporalQuery定义了查询的通用接口。

读到这,TemporalQuery、TemporalQueries之间是什么关系?怎么使用?你明白了吗?

相关文章:

深入了解Java8新特性-日期时间API之TemporalQuery、TemporalQueries

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概2000多字&#xff0c;预计阅读时间长需要5分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&#x…...

记录一次现网问题排查(分享查域名是否封禁小程序)

背景&#xff1a; 收到工单反馈说现网业务一个功能有异常&#xff0c;具体现象是tc.hb.cn域名无法访问&#xff0c;客户地区是河南省&#xff0c;这里记录下排查过程和思路。 首先梳理链路 客户端域名 tc.hb.cn cname—> domainparking-dnspod.cn(新加坡clb)—> snat—&…...

linux下实现Qt程序实现开机自启动

1.原理 要想实现开机自启动&#xff0c;首先&#xff0c;QT是没有这种实现的&#xff0c;最好是靠电脑开机的启动目录启动软件&#xff0c;下面这个目录 /etc/xdg/autostart 这是操作系统中用于配置启动项的目录&#xff0c;该目录下存放着开机自启动的启动器(.desktop)文件…...

TCP 基本认识

1&#xff1a;TCP 头格式有哪些&#xff1f; 序列号&#xff1a;用来解决网络包乱序问题。 确认应答号&#xff1a;用来解决丢包的问题。 2&#xff1a;为什么需要 TCP 协议&#xff1f; TCP 工作在哪一层&#xff1f; IP 层是「不可靠」的&#xff0c;它不保证网络包的交付…...

智慧城市包括哪些内容?有哪些智慧城市物联网方案?

数字城市、智慧城市的发展&#xff0c;离不开对公共基础设施的数字化、智慧化改造升级。通过融合边缘计算、5G、物联网、数字孪生、人工智能等新一代信息技术&#xff0c;助力传统公共基础设施提升增强全流程数据能力、计算能力、服务能力&#xff0c;从而不断丰富公共基础设施…...

Arkts@Watch装饰器与内置组件双向同步深度讲解与实战应用【鸿蒙专栏-14】

文章目录 ArkTS 状态管理深度解析:@Watch 和 $$ 运算符的妙用@Watch 装饰器:状态变量的敏感监听装饰器说明语法说明观察变化和行为表现限制条件使用场景$$ 运算符:内置组件状态的双向同步使用规则使用示例ArkTS 深度探索:@Watch 装饰器与 $$ 运算符的进阶应用进阶应用:@Wa…...

iMazing是什么软件?2024最新版本如何下载

iMazing是一款功能强大的iOS设备管理软件&#xff0c;它可以帮助用户备份和管理他们的iPhone、iPad或iPod Touch上的数据。除此之外&#xff0c;它还可以将备份数据转移到新的设备中、管理应用程序、导入和导出媒体文件等。本文将详细介绍iMazing的功能和安全性&#xff0c;并教…...

LeetCode(40)同构字符串【哈希表】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 同构字符串 1.题目 给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符&#xff0…...

【代码随想录算法训练营-第一天】【数组】704. 二分查找、27. 移除元素

LeetCode-704.二分查找 【错误】第一遍提交的代码 主要错误点&#xff1a; 没弄清楚区间的定义导致&#xff1a;r 在定义处的赋值和 if 判断之后 r 的复制没有想清楚&#xff1b;没有搞清楚判断循环结束的条件&#xff1b;没有搞明白区间的定义&#xff0c;r 和 l 如何赋值&a…...

[教程] 一文进阶Redis

Redis进阶 过期时间&#xff08;Expire&#xff09; Redis 的过期时间&#xff08;Expire&#xff09;功能是一种数据生命周期管理机制&#xff0c;允许为键设置一个过期时间。一旦达到该时间&#xff0c;键会自动被删除。这对于管理缓存数据特别有用&#xff0c;可以自动清理…...

通用plantuml模板头

通用plantuml文件 startuml participant Admin order 0 #87CEFA // 参与者、顺序、颜色 participant Student order 1 #87CEFA participant Teacher order 2 #87CEFA participant TestPlayer order 3 #87CEFA participant Class order 4 #87CEFA participant Subject order …...

网站公安备案流程

1.公安备案网址 https://beian.mps.gov.cn/ 选择用户登录->法人用户登录 左边的码下载APP&#xff0c;登上去之后用APP扫右边的码&#xff0c;人脸识别...

关于使用若依,并不会自动分页的解决方式

关于使用若依,并不会自动分页的解决方式 如果只是单纯的使用一次查询list,并不会触发这个bug 例如: 但是我们如果对里面的数据进行调整修改的话就会触发这个bug 例如: 此时可以看到我对数据进行了转换!!!,这时如果超出数据10条,实际我们拿到的永远是10条,具体原因这里就不展…...

在PyCharm中配置PyQt5环境

在PyCharm中配置PyQt5环境 文章目录 1.安装第三方库2.PyQt5设计器3.PyUIC转换工具 &#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1f339;꧔ꦿ&#x1…...

SIFI 极值点拟合的详细推导过程

在获得高斯差分金字塔之后&#xff0c;我们可以根据邻近尺度和邻近像素一共 26 个像素点的灰度值和中心像素点的灰度值比较&#xff0c;如果中心像素点的值是最大或者最小的&#xff0c;则作为极值点保留下来。 但是我们知道像素是网格排布的&#xff0c;也就是说是离散的&…...

Kontakt v7.7.2(音频采样器)

Native Instruments Kontakt 7是一款强大的软件采样器&#xff0c;它允许用户从各种来源采样音频并进行编辑和处理。它包含大量预设采样库&#xff0c;包括乐器、合成器、鼓组和声音效果等。此外&#xff0c;Kontakt 7还允许用户创建自己的采样库&#xff0c;以便根据自己的需要…...

Drawer抽屉(antd-design组件库)简单用法

1.Drawer抽屉 屏幕边缘滑出的浮层面板。 2.何时使用 抽屉从父窗体边缘滑入&#xff0c;覆盖住部分父窗体内容。用户在抽屉内操作时不必离开当前任务&#xff0c;操作完成后&#xff0c;可以平滑地回到原任务。 需要一个附加的面板来控制父窗体内容&#xff0c;这个面板在需要时…...

Android控件全解手册 - 多语言切换完美解决方案(兼容7.0以上版本)

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…...

Android-P CameraSerivce

0 前言 本文重点分析Android-P的CameraService实现。 验证:Goldfish模拟器 1 定义 图1.1 CameraService ICameraServiceframeworks/av/camera/aidl/android/hardware/ICameraService.aidlBnCameraServiceout/soong/.intermediates/frameworks/av/camera/libcamera_client/an…...

21.Oracle的程序包(Package)

Oracle的程序包Package 一、Package的概述1、什么是Oracle11g的Package2、Package的作用是什么3、常见的系统内置Package 二、创建Package的相关语法1、Package的创建语法2、Package的删除3、具体案例4、Package的使用5、与Package相关的其他语法 三、常见内置程序包的使用1、…...

重新定义零代码开发:H5-Dooring的反常识实践指南

重新定义零代码开发&#xff1a;H5-Dooring的反常识实践指南 【免费下载链接】h5-Dooring H5 Page Maker, H5 Editor, LowCode. Make H5 as easy as building blocks. | 让H5制作像搭积木一样简单, 轻松搭建H5页面, H5网站, PC端网站,LowCode平台. 项目地址: https://gitcode…...

SecGPT-14B提示工程:提升OpenClaw安全任务准确率的5个模板

SecGPT-14B提示工程&#xff1a;提升OpenClaw安全任务准确率的5个模板 1. 为什么需要专门的安全提示模板 上周我在用OpenClaw自动化处理服务器日志时&#xff0c;遇到了一个典型问题&#xff1a;当要求它"检查最近的安全事件"时&#xff0c;这个智能助手要么返回过…...

Gemini助力Google Maps:开启智能出行新体验

Google Maps新成员Gemini&#xff1a;智能行程规划初体验 在Google Maps中&#xff0c;Gemini以“Ask Maps”的形式呈现&#xff0c;点击会弹出文本框。它能依据Google Maps的数据&#xff0c;结合用户评价来回答问题&#xff0c;还能从其他来源获取信息。测试中&#xff0c;让…...

黑丝空姐-造相Z-Turbo构建AI编程助手:自动生成前端组件配图

黑丝空姐-造相Z-Turbo构建AI编程助手&#xff1a;自动生成前端组件配图 想象一下这个场景&#xff1a;你正在为一个航空公司的内部管理系统编写前端代码&#xff0c;需要创建一个“机组人员资料卡”组件。你已经写好了HTML结构和CSS样式&#xff0c;但卡在了头像占位符上——是…...

零信任实践:OpenClaw+SecGPT-14B构建个人安全决策引擎

零信任实践&#xff1a;OpenClawSecGPT-14B构建个人安全决策引擎 1. 为什么需要个人安全决策引擎 去年某个深夜&#xff0c;我的服务器突然收到大量异常登录尝试。虽然最终没有造成损失&#xff0c;但这件事让我意识到&#xff1a;传统的静态密码和固定权限规则&#xff0c;在…...

信号与系统核心知识点全解析

1.1 连续时间与离散时间信号1. 连续时间信号记为 x(t)自变量 t 取全体实数&#xff0c;在整个时间轴上都有定义图形是连续曲线2. 离散时间信号记为 x[n]自变量 n 只能取整数&#xff1a;…,−2,−1,0,1,2,…也叫序列&#xff0c;图形是一系列离散点离散信号可由连续信号采样得到…...

MemSifter 核心机制深度解析(非常详细),4B小模型管理大模型记忆从入门到精通,收藏这一篇就够了!

一句话总结&#xff1a;MemSifter训练一个4B参数的代理模型&#xff0c;通过"先推理再检索"的方式&#xff0c;替大模型从海量历史对话中筛选相关记忆&#xff0c;速度比全上下文方案快12倍&#xff0c;效果还更好。 论文标题&#xff1a;MemSifter: Offloading LLM …...

Phi-4-mini-reasoning应用场景:技术文档自动逻辑校验与漏洞推理辅助工具

Phi-4-mini-reasoning应用场景&#xff1a;技术文档自动逻辑校验与漏洞推理辅助工具 1. 模型概述 Phi-4-mini-reasoning是一款由微软开发的3.8B参数轻量级开源模型&#xff0c;专为数学推理、逻辑推导和多步解题等强逻辑任务设计。该模型以"小参数、强推理、长上下文、低…...

激光测距技术:从原理到选型的全方位指南

1. 激光测距技术的基本原理 激光测距技术本质上是通过测量激光信号从发射到接收的时间或相位变化来计算距离。想象一下你在山谷里大喊一声&#xff0c;通过听到回声的时间差就能估算出对面山壁的距离&#xff0c;激光测距就是这个原理的"高科技版本"。只不过激光的速…...

OpenVINO benchmark_app 性能测试全攻略:从参数解析到FP32/INT8模型对比实战

OpenVINO benchmark_app 深度性能调优指南&#xff1a;参数解析与量化模型实战 在边缘计算和嵌入式设备上部署AI模型时&#xff0c;性能优化往往是决定项目成败的关键因素。Intel推出的OpenVINO工具套件中的benchmark_app&#xff0c;就像一位专业的"模型体检医生"&a…...