进阶JAVA篇- DateTimeFormatter 类与 Period 类、Duration类的常用API(八)

目录

              1.0 DateTimeFormatter 类的说明

                1.1 如何创建格式化器的对象呢?

                 1.2 DateTimeFormatter 类中的 format(LocalDateTime  ldt) 实例方法

               2.0 Period 类的说明

                 2.1 Period 类中的 between(localDate1,localDate2) 静态方法来创建对象。

               3.0 Duration 类的说明

               4.0 小结


API                

        1.0 DateTimeFormatter 类的说明

        是 Java 8 新增的一个类,用于格式化和解析日期时间对象。它提供了一系列的预定义格式化模式,也支持自定义格式化模式。使用 DateTimeFormatter 类可以将日期时间对象转换为字符串,也可以将字符串转换为日期时间对象。

        1.1 如何创建格式化器的对象呢?

        可以通过 ofPattern(String pattern) 静态方法来创建格式化器的对象。这里 String pattern 指的是自定的格式,其中 yyyy(年)、MM(月)、dd(日)、HH(时)、mm(分)、ss(秒)、EEE(星期几)、a(上午或者下午)

代码如下:

import java.time.format.DateTimeFormatter;public class Text_DateTimeFormatter {public static void main(String[] args) {DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EEE a");}
}

        可以简单的理解这类的作用就是自己定义一个格式,然后给日期时间对象提供格式转变为字符串,或者是将已经格式化好的字符串转变为日期时间的对象。

         1.2 DateTimeFormatter 类中的 format(LocalDateTime  ldt) 实例方法

        通过 format(LocalDateTime  ldt) 实例方法从 LocalDateTime 对象转变为以字符串输出的格式化的日期时间(将日期时间对象格式化为字符串)。

代码如下:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class Text_DateTimeFormatter {public static void main(String[] args) {DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EEE a");LocalDateTime ldt = LocalDateTime.now();System.out.println(dtf.format(ldt));}
}

运行结果如下:

        补充还可以用 LocalTimeFormatter 类的 formatter() 的实例方法,效果是一样的。

代码如下:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class Text_DateTimeFormatter {public static void main(String[] args) {DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EEE a");LocalDateTime ldt = LocalDateTime.now();String b = dtf.format(ldt);String a = ldt.format(dtf);System.out.println(a);System.out.println(b);}
}

运行结果如下:

        1.3 LocalDateTime 类中的 parse(CharSequence text, DateTimeFormatter formatter) 实例方法

        可以将字符串解析为日期时间对象。

代码如下:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class Text_DateTimeFormatter {public static void main(String[] args) {DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String str = "2028-12-12 09:30:30";LocalDateTime ldt = LocalDateTime.parse(str,dtf);System.out.println(ldt);}
}

运行结果如下:

        2.0 Period 类的说明

        可以用于计算两个 LocalDate 对象相差的年数、月数、天数。

        2.1 Period 类中的 between(localDate1,localDate2) 静态方法来创建对象。

代码如下:

import java.time.Period;public class Text_DateTimeFormatter {public static void main(String[] args) {LocalDate localDate1 = LocalDate.of(2026,12,12);LocalDate localDate2 = LocalDate.of(2028,12,12);Period period = Period.between(localDate1,localDate2);//相差的年数System.out.println(period.getYears());//相差的月数System.out.println(period.getMonths());//相差的天数System.out.println(period.getDays());}
}

运行结果:

        3.0 Duration 类的说明

         可以用于计算两个时间对象相差的天数、小时数、分数、秒数、纳秒数;支持 LocalTime、LocalDateTime、Instant等时间。

代码如下:

import java.time.*;public class Text_DateTimeFormatter {public static void main(String[] args) {LocalDateTime localDateTime1 = LocalDateTime.of(2023,12,12,13,13,22);LocalDateTime localDateTime2 = LocalDateTime.of(2023,12,12,14,13,22);Duration duration = Duration.between(localDateTime1,localDateTime2);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());}}

          需要注意的是得到相差数大多数是用 to 开头,少数用 get 开头。      

运行结果如下:

        

         4.0 小结

        DateTimeFormatter 类用于格式化和解析日期时间对象,可以将日期时间对象转换为字符串,也可以将字符串转换为日期时间对象。它提供了一系列的预定义格式化模式,也支持自定义格式化模式。

        Period 类用于表示日期之间的差距,可以表示年、月、日之间的差距。它可以用于计算和操作日期对象之间的差距,例如计算两个日期之间相差几天、几个月、几年等。

        Duration 类用于表示时间之间的差距,可以表示小时、分钟、秒、毫秒、纳秒之间的差距。它可以用于计算和操作时间对象之间的差距,例如计算两个时间之间相差几小时、几分钟、几秒等。

这三个类的使用示例:

// DateTimeFormatter 类示例
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = LocalDateTime.now().format(formatter);
System.out.println(formattedDateTime);// Period 类示例
LocalDate date1 = LocalDate.of(2023, 10, 15);
LocalDate date2 = LocalDate.of(2024, 10, 15);
Period period = Period.between(date1, date2);
System.out.println(period.getYears() + " years, " + period.getMonths() + " months, " + period.getDays() + " days");// Duration 类示例
LocalTime time1 = LocalTime.of(10, 30, 0);
LocalTime time2 = LocalTime.of(12, 0, 0);
Duration duration = Duration.between(time1, time2);
System.out.println(duration.toHours() + " hours, " + duration.toMinutes() + " minutes, " + duration.getSeconds() + " seconds");



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

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

相关文章

京东优惠券怎么找?

京东优惠券怎么找? 1、手机安装「草柴」后,打开京东挑选要购买的商品; 2、挑选好京东商品后,点击右上角的「分享」,并点击「复制链接」; 3、将复制的京东商品链接,粘贴到草柴输入框&#xff0c…

antd pro form 数组套数组 form数组动态赋值 shouldUpdate 使用

antd form中数组套数组 form数组动态变化 动态赋值 需求如上,同时添加多个产品,同时每个产品可以增加多台设备,根据设备增加相应编号,所以存在数组套数组,根据数组值动态变化 使用的知识点 form.list form中的数组…

十六、代码校验(5)

本章概要 基准测试 微基准测试JMH 的引入 基准测试 我们应该忘掉微小的效率提升,说的就是这些 97% 的时间做的事:过早的优化是万恶之源。—— Donald Knuth 如果你发现自己正在过早优化的滑坡上,你可能浪费了几个月的时间(如果你雄心勃勃的…

Vitis导入自制IP导致无法构建Platform

怎么还有这种问题( 解决Vitis导入自制IP导致无法构建Platform – TaterLi 个人博客 Vitis报错:fatal error: xxx.h: No such file or directory._ly2lj的博客-CSDN博客 在指定位置黏入以上代码即可: INCLUDEFILES$(wildcard *.h) LIBSOUR…

基于springboot养老院管理系统开题报告

一、项目简介 本项目是一款基于Spring Boot的养老院管理系统,旨在为养老院提供一个全方位的解决方案,包括老人信息管理、医疗服务管理、饮食管理、活动管理等模块。通过系统的数字化管理,将老人的生活照料和医学护理更加科学化、规范化&…

【AI视野·今日Robot 机器人论文速览 第五十四期】Fri, 13 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Fri, 13 Oct 2023 Totally 45 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚AI与机器人安全, 从攻击界面、伦理法律和人机交互层面进行了论述。(from 密西西比大学) 📚机器人与图机器学…

Centos Docker部署Redis集群三主三从

一、安装Docker yum install docker-engine 二、编辑节点配置文件 创建文件夹 cd /home # 节点一:6370端口 mkdir -p redis-cluster/redis-6370/conf mkdir -p redis-cluster/redis-6370/data # 节点二:6371端口 mkdir -p redis-cluster/redis-6371/co…

华为云云耀云服务器L实例评测|企业项目最佳实践之建议与总结(十二)

华为云云耀云服务器L实例评测|企业项目最佳实践系列: 华为云云耀云服务器L实例评测|企业项目最佳实践之云服务器介绍(一) 华为云云耀云服务器L实例评测|企业项目最佳实践之华为云介绍(二) 华为云云耀云服务器L实例评测&#xff5…

Java基础面试-接口和抽象类的区别

抽象类 详细描述 类和类之间具有共同特征,将这些共同特征抽取出来,形成的就是抽象类。如果一个类没有足够的信息来描述一个具体的对象,这个类就是抽象类。因为类本身就是不存在的,所以抽象类无法创建对象,也就是无法…

2021年12月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python编程(1~6级)全部真题・点这里 C/C编程(1~8级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 执行以下程序 a[33,55,22,77] a.sort() for i in a:print(i)运行…

Nginx:反向代理(示意图+配置)

示意图: 反向代理 反向代理(Reverse Proxy)是代理服务器的一种,它代表服务器接收客户端的请求,并将这些请求转发到适当的服务器。当请求在后端服务器完成之后,反向代理搜集请求的响应并将其传输给客户端。…

MFC-对话框

目录 1、模态和非模态对话框: (1)、对话框的创建 (2)、更改默认的对话框名称 (3)、创建模态对话框 1)、创建按钮跳转的界面 2)、在跳转的窗口添加类 3&#xff0…

java_方法引用和构造器引用

文章目录 一、方法引用1.1、方法引用的理解1.2、格式1.3、举例 二、构造器引用2.1、格式2.2、例子2.3、数组引用 一、方法引用 1.1、方法引用的理解 方法引用,可以看做是基于lambda表达式的进一步刻画当需要提供一个函数式接口的实例时,可以使用lambda…

牛客周赛 Round 15_B

题目描述 对于一个小写字母而言,游游可以通过一次操作把这个字母变成相邻的字母。a和b邻,b和c相邻,以此类推。特殊的,a和z也是相邻的。可以认为,小写字母的相邻规则为一个环。 游游拿到了一个仅包含小写字母的字符串…

了解油封对汽车安全的影响?

油封也称为轴封或径向轴封,是车辆发动机、变速箱和其他各种机械系统中的重要部件。它们的主要功能是阻止重要发动机部件的液体(例如油或冷却剂)泄漏,同时防止污染物进入。这些看似简单的任务,但对汽车的安全性和可靠性有着深远的影响。 油封…

docker安装nessus

注册地址:https://zh-tw.tenable.com/products/nessus/nessus-essentials 临时邮箱:http://24mail.chacuo.net/ 帮助文档:https://docs.tenable.com/nessus/Content/DeployNessusDocker.htmdocker pull tenableofficial/nessusdocker run --name "my-nessus" -d -p 8…

vscode用密钥文件连接ssh:如果一直要输密码怎么办

commandshiftP:打开ssh配置文件 加上这么一段,host就是你给主机起的名字 对IdentityFile进行更改,改成相应的密钥文件 然后commandshiftP链接到主机就可以了 但是有时候它会让输入密码 这是由于你给这个IdentityFile的权限太多了&#xf…

npm 常用指令总结

1. 初始化包 一个存放了代码的文件夹,如果里面有 package.json 文件,则可以把这个文件夹称之为包。 npm init -y 注意: 由于包名不能有中文,不能有大写,不能和未来要下载的包重名. 所以我们快速初始化包时,我们的文件夹也不能违反前面说的规则.(因为默认会将文件夹的名称,作…

数据结构 - 2(顺序表10000字详解)

一:List 1.1 什么是List 在集合框架中,List是一个接口,继承自Collection。 Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示: Iterable也是一个接口,Iterabl…

【Vue面试题二十三】、你了解vue的diff算法吗?说说看

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:你了解vue的diff算法吗&…