进阶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 如果你发现自己正在过早优化的滑坡上,你可能浪费了几个月的时间(如果你雄心勃勃的…

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

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

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

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

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…

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…

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

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

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

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

【Vue面试题二十一】、Vue中的过滤器了解吗?过滤器的应用场景有哪些?

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

Java字符串String

【char】类型代表字符类型,【String】类型代表字符串类型; 1.String类 1.1 声明字符串 在Java中字符串必须包含在一对双引号(“ ")之内。双引号包含的都是字符串。 声明字符串语法: String str; //声明字符串语…

排序算法-选择排序法(SelectionSort)

排序算法-选择排序法(SelectionSort) 1、说明 选择排序法也是枚举法的应用,就是反复从未排序的数列中取出最小的元素,加入另一个数列中,最后的结果即为已排序的数列。选择排序法可使用两种方式排序,即在所…

苍穹外卖(七) Spring Task 完成订单状态定时处理

Spring Task 完成订单状态定时处理, 如处理支付超时订单 Spring Task介绍 Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。 应用场景: 信用卡每月还款提醒 火车票售票系统处理未支付订单 入职纪念日为用户发送通知 点外…

操作系统学习笔记4-死锁问题

文章目录 1、死锁逻辑图2、死锁三胞胎3、死锁的原因及必要条件4、死锁处理策略之死锁预防5、死锁处理策略之死锁避免(银行家算法)6、死锁处理策略之死锁检测与解除 1、死锁逻辑图 2、死锁三胞胎 3、死锁的原因及必要条件 4、死锁处理策略之死锁预防 5、死…

python openai宠物名字生成器

文章目录 OpenAICompletion宠物名字生成器提示词工程 prompt enginering 构建应用程序结果展示 OpenAI OpenAI 已经训练了非常擅长理解和生成文本的领先的语言模型。我们的 API 提供对这些模型的访问,可用于处理几乎任何涉及”语言处理“的任务。 Completion 补全…

18 | 生产环境多数据源的处理方法有哪些

工作中我们时常会遇到跨数据库操作的情况,这时候就需要配置多数据源,那么如何配置呢?常用的方式及其背后的原理支撑是什么呢?我们下面来了解一下。 首先看看两种常见的配置方式,分别为通过多个 Configuration 文件、利…

【完美世界】云曦篇开播时间定档,推迟两周,石昊新形态帅翻,怒斩战王

Hello,小伙伴们,我是小郑继续为大家深度解析国漫资讯。 完美世界动画更新最新资讯,石昊在血色平原与云曦重逢并英雄救美。 官方公布了云曦特别篇的先导预告,播出时间推迟了两周。 石昊在特别篇中出现了新形态,以雷帝甲胄为主&…