Java中的日期与时间对象:LocalDate类、LocalTime类、LocalDateTime类、DateTimeFormatter类

在 Java 中,LocalDate、LocalTime 和 LocalDateTime 是 java.time 包中的类,用于表示日期、时间和日期时间。这些类提供了不可变的日期与时间对象,是 Java 8 及以后版本中引入的一部分,用于替代旧的 java.util.Date 和 java.util.Calendar 类。

获取 LocalDate、LocalTime、LocalDateTime 实例对象:

LocalDate类、LocalTime类、LocalDateTime类都提供了静态的 now() 方法和 of() 方法,用获取实例对象。

方法说明示例
now() 获取系统当前日期/时间对应的该对象。LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
of()获取指定日期/时间的对象。LocalDate localDate = LocalDate.of(2024, 11, 2);
LocalTime localTime = LocalTime.of(16, 30, 18);
LocalDateTime localDateTime = LocalDateTime.of(2024, 11, 2, 16, 30, 18);

1、LocalDate 类

LocalDate 类表示不带时间的日期,即年、月和日。

LocalDate 类的常用方法:

方法说明

getYear()

getMonthValue()

getDayOfMonth()

getDayOfYear()

getDayOfWeek()

获取日期对象中的某个信息。

withYear(int year)

withMonth(int month)

withDayOfMonth(int dayOfMonth)

withDayOfYear(int dayOfYear)

修改日期对象中的某个信息。

plusYears(long yearsToAdd)

plusMonths(long monthsToAdd)

plusDays(long daysToAdd)

plusWeeks(long weeksToAdd)

增加日期对象中的某个信息

minusYears(long yearsToSubtract)

minusMonths(long monthsToSubtract)

minusDays(long daysToSubtract)

minusWeeks(long weeksToSubtract)

减少日期对象中的某个信息。
equals(Object obj)
isBefore(ChronoLocalDate other)
isAfter(ChronoLocalDate other)
判断两个日期对象,是否相等、在之前、还是之后。
format(DateTimeFormatter formatter)将日期对象格式化为字符串。
parse(CharSequence text, DateTimeFormatter formatter)解析字符串为日期对象。

【示例】使用 LocalDate 日期对象。

import java.time.LocalDate;/*** 使用 LocalDate 日期对象* @author pan_junbiao*/
@Test
public void TestLocalDate()
{// 1、创建日期对象LocalDate localDate = LocalDate.now(); //获取当前的日期对象LocalDate ofLocalDate = LocalDate.of(2099, 8, 11); //获取指定的日期对象System.out.println("获取当前的日期对象:" + localDate);System.out.println("获取指定的日期对象:" + ofLocalDate);// 2、获取日期对象中的某个信息:getYear、getMonthValue、getDayOfMonth、getDayOfYear、getDayOfWeekSystem.out.println("年:" + localDate.getYear());System.out.println("月:" + localDate.getMonthValue());System.out.println("日:" + localDate.getDayOfMonth());System.out.println("一年中的第几天:" + localDate.getDayOfYear());System.out.println("星期几:" + localDate.getDayOfWeek().getValue());// 3、修改日期对象中的某个信息:withYear、withMonth、withDayOfMonth、withDayOfYearLocalDate withLocalDate = localDate.withYear(2099).withMonth(8).withDayOfMonth(11);System.out.println("修改日期对象后:" + withLocalDate);// 4、增加日期对象中的某个信息:plusYears、plusMonths、plusDays、plusWeeksLocalDate plusLocalDate = localDate.plusDays(10);System.out.println("当前日期增加10天:" + plusLocalDate);// 5、减少日期对象中的某个信息:minusYears、minusMonths、minusDays、minusWeeks、minusWeeksLocalDate minusLocalDate = localDate.minusYears(1);System.out.println("当前日期减少1年:" + minusLocalDate);// 6、判断两个日期对象,是否相等、在之前、还是之后:equals、isBefore、isAfterSystem.out.println("判断两个日期对象是否相等:" + withLocalDate.equals(ofLocalDate));System.out.println("判断两个日期对象是否在之前:" + localDate.isBefore(ofLocalDate));System.out.println("判断两个日期对象是否在之后:" + localDate.isAfter(ofLocalDate));// 7、将日期对象格式化为字符串DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");String localDateStr = formatter.format(localDate);System.out.println("将日期对象格式化为字符串:" + localDateStr);// 8、解析字符串为日期对象LocalDate localDateAna = LocalDate.parse(localDateStr, formatter);System.out.println("解析字符串为日期对象:" + localDateAna);
}

执行结果:

2、LocalTime 类

LocalTime 类表示不带日期的时间,即小时、分钟、秒和纳秒。

LocalTime 类的常用方法:

方法说明

getHour()

getMinute()

getSecond()

getNano()

获取时间对象中的某个信息。

withHour(int hour)

withMinute(int minute)

withSecond(int second)

withNano(int nanoOfSecond)

修改时间对象中的某个信息。

plusHours(long hoursToAdd)

plusMinutes(long minutesToAdd)

plusSeconds(long secondstoAdd)

plusNanos(long nanosToAdd)

增加时间对象中的某个信息。

minusHours(long hoursToSubtract)

minusMinutes(long minutesToSubtract)

minusSeconds(long secondsToSubtract)

minusNanos(long nanosToSubtract)

减少时间对象中的某个信息。

equals(Object obj)

isBefore(LocalTime other)

isAfter(LocalTime other)

判断两个时间对象,是否相等、在之前、还是之后。
format(DateTimeFormatter formatter)将时间对象格式化为字符串。
parse(CharSequence text, DateTimeFormatter formatter)解析字符串为时间对象。

【示例】使用 LocalTime 时间对象。

import java.time.LocalTime;/*** 使用 LocalTime 时间对象* @author pan_junbiao*/
@Test
public void TestLocalTime()
{// 1、创建时间对象LocalTime newlocalTime = LocalTime.now(); //获取当前的时间对象LocalTime localTime = LocalTime.of(18, 28, 39, 999999999); //获取指定时间的对象System.out.println("获取当前的时间对象:" + newlocalTime);System.out.println("获取指定的时间对象:" + localTime);// 2、获取时间对象中的某个信息:getHour、getMinute、getSecond、getNanoSystem.out.println("小时:" + localTime.getHour());System.out.println("分钟:" + localTime.getMinute());System.out.println("秒:" + localTime.getSecond());System.out.println("纳秒:" + localTime.getNano());// 3、修改时间对象中的某个信息:withHour、withMinute、withSecond、withNanoLocalTime withLocalTime = localTime.withHour(19).withMinute(38).withSecond(49);System.out.println("修改时间对象:" + withLocalTime);// 4、增加时间对象中的某个信息:plusHours、plusMinutes、plusSeconds、plusNanosLocalTime plusLocalTime = localTime.plusHours(2);System.out.println("时间对象增加2小时:" + plusLocalTime);// 5、减少时间对象中的某个信息:minusHours、minusMinutes、minusSeconds、minusNanosLocalTime minusLocalTime = localTime.minusHours(2);System.out.println("时间对象减少2小时:" + minusLocalTime);// 6、判断两个时间对象,是否相等、在之前、还是之后:equals、isBefore、isAfterSystem.out.println("判断两个日期对象是否相等:" + newlocalTime.equals(localTime));System.out.println("判断两个日期对象是否在之前:" + newlocalTime.isBefore(localTime));System.out.println("判断两个日期对象是否在之后:" + newlocalTime.isAfter(localTime));// 7、将时间对象格式化为字符串DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH时mm分ss秒");String localTimeStr = formatter.format(localTime);System.out.println("将时间对象格式化为字符串:" + localTimeStr);// 8、解析字符串为时间对象LocalTime localTimeAna = LocalTime.parse(localTimeStr, formatter);System.out.println("解析字符串为时间对象:" + localTimeAna);
}

执行结果:

3、LocalDateTime 类

LocalDateTime 类表示带日期和时间,即年、月、日、小时、分钟、秒和纳秒。

LocalDateTime 类可以理解为是 LocalDate 类和 LocalTime 类的结合。

LocalDateTime 类的常用方法:

方法说明

getYear()

getMonthValue()

getDayOfMonth()

getDayOfYear()

getDayOfWeek()

getHour()

getMinute()

getSecond()

getNano()

获取日期对象中的某个信息。

withYear(int year)

withMonth(int month)

withDayOfMonth(int dayOfMonth)

withDayOfYear(int dayOfYear)

withHour(int hour)

withMinute(int minute)

withSecond(int second)

withNano(int nanoOfSecond)

修改日期对象中的某个信息。

plusYears(long yearsToAdd)

plusMonths(long monthsToAdd)

plusDays(long daysToAdd)

plusWeeks(long weeksToAdd)

plusHours(long hoursToAdd)

plusMinutes(long minutesToAdd)

plusSeconds(long secondstoAdd)

plusNanos(long nanosToAdd)

增加日期对象中的某个信息

minusYears(long yearsToSubtract)

minusMonths(long monthsToSubtract)

minusDays(long daysToSubtract)

minusWeeks(long weeksToSubtract)

minusHours(long hoursToSubtract)

minusMinutes(long minutesToSubtract)

minusSeconds(long secondsToSubtract)

minusNanos(long nanosToSubtract)

减少日期对象中的某个信息。
equals(Object obj)
isBefore(ChronoLocalDate other)
isAfter(ChronoLocalDate other)
判断两个日期对象,是否相等、在之前、还是之后。
format(DateTimeFormatter formatter)将日期对象格式化为字符串。
parse(CharSequence text, DateTimeFormatter formatter)解析字符串为日期对象。

【示例】使用 LocalDateTime 日期对象。

import java.time.LocalDateTime;/*** 使用 LocalDateTime 日期对象* @author pan_junbiao*/
@Test
public void TestLocalDateTime()
{// 1、创建日期对象LocalDateTime newLocalDateTime = LocalDateTime.now(); //获取当前的日期对象LocalDateTime localDateTime = LocalDateTime.of(2024, 11, 2, 18, 28, 39, 999999999); //获取指定的日期对象System.out.println("获取当前的日期对象:" + newLocalDateTime);System.out.println("获取指定的日期对象:" + localDateTime);// 2、获取日期对象中的某个信息:getYear、getMonthValue、getDayOfMonth、getDayOfYear、getDayOfWeek 等System.out.println("年:" + localDateTime.getYear());System.out.println("月:" + localDateTime.getMonthValue());System.out.println("日:" + localDateTime.getDayOfMonth());System.out.println("一年中的第几天:" + localDateTime.getDayOfYear());System.out.println("星期几:" + localDateTime.getDayOfWeek().getValue());System.out.println("小时:" + localDateTime.getHour());System.out.println("分钟:" + localDateTime.getMinute());System.out.println("秒:" + localDateTime.getSecond());System.out.println("纳秒:" + localDateTime.getNano());// 3、修改日期对象中的某个信息:withYear、withMonth、withDayOfMonth、withDayOfYear 等LocalDateTime withLocalDateTime = localDateTime.withYear(2099).withMonth(8).withDayOfMonth(11).plusHours(2);System.out.println("修改日期对象后:" + withLocalDateTime);// 4、增加日期对象中的某个信息:plusYears、plusMonths、plusDays、plusWeeks 等LocalDateTime plusLocalDateTime = localDateTime.plusDays(10);System.out.println("当前日期增加10天:" + plusLocalDateTime);// 5、减少日期对象中的某个信息:minusYears、minusMonths、minusDays、minusWeeks、minusWeeks 等LocalDateTime minusLocalDateTime = localDateTime.minusYears(1);System.out.println("当前日期减少1年:" + minusLocalDateTime);// 6、判断两个日期对象,是否相等、在之前、还是之后:equals、isBefore、isAfterSystem.out.println("判断两个日期对象是否相等:" + newLocalDateTime.equals(localDateTime));System.out.println("判断两个日期对象是否在之前:" + newLocalDateTime.isBefore(localDateTime));System.out.println("判断两个日期对象是否在之后:" + newLocalDateTime.isAfter(localDateTime));// 7、将日期对象格式化为字符串DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒");String localDateTimeStr = formatter.format(localDateTime);System.out.println("将日期对象格式化为字符串:" + localDateTimeStr);// 8、解析字符串为日期对象LocalDateTime localDateTimeAna = LocalDateTime.parse(localDateTimeStr, formatter);System.out.println("解析字符串为日期对象:" + localDateTimeAna);
}

执行结果:

4、DateTimeFormatter 类

使用旧的 Date 对象时,我们通常使用 SimpleDateFormat 进行格式化显示。使用新的 LocalDateTime 或 ZonedLocalDateTime 时,我们要进行格式化显示,就要使用 DateTimeFormatter 类。和 SimpleDateFormat 不同的是,DateTimeFormatter 不但是不变对象,它还是线程安全的。因为 SimpleDateFormat 不是线程安全的,使用的时候,只能在方法内部创建新的局部变量。而 DateTimeFormatter 可以只创建一个实例,到处引用。

日期和时间模式(注意大小写,代表的含义是不同的):

模式说明
yyyy
MM
dd
hh1~12小时制(1-12)
HH24小时制(0-23)
mm
ss
S毫秒
E星期几
D一年中的第几天
F一月中的第几个星期(会把这个月总共过的天数除以7)
w一年中的第几个星期
W一月中的第几星期(会根据实际情况来算)
a上下午标识
k和HH差不多,表示一天24小时制(1-24)。
K和hh差不多,表示一天12小时制(0-11)。
z表示时区 

【示例】使用 DateTimeFormatter类,实现日期和时间进行格式化和解析。

/*** 使用 DateTimeFormatter类,实现日期和时间进行格式化和解析* @author pan_junbiao*/
@Test
public void TestDateTimeFormatter()
{// 1、创建日期实例对象LocalDateTime localDateTime = LocalDateTime.of(2024, 11, 2, 18, 28, 39, 999999999); //获取指定的日期对象System.out.println("获取指定的日期对象:" + localDateTime);// 2、将日期对象格式化为字符串DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒");String localDateTimeStr = formatter.format(localDateTime);System.out.println("将日期对象格式化为字符串:" + localDateTimeStr);// 3、解析字符串为日期对象LocalDateTime localDateTimeAna = LocalDateTime.parse(localDateTimeStr, formatter);System.out.println("解析字符串为日期对象:" + localDateTimeAna);
}

执行结果:

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

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

相关文章

Java基于微信小程序的美食推荐系统(附源码,文档)

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

杨辉三角形

大家好,今天给大家分享一下杨辉三角形是如何打印的,首先我们来看看它的原理。 我们先来看结果 1.如果把它看为一个二维数组(包括后面的空格),那么它数字的这边是一个直角三角形,它的第一列和对角线都为1&a…

C语言进阶之我与指针的爱恨情仇(1)

一.前言 我们在初阶《指针》初阶C语言-指针-CSDN博客已经讲过了一些基础知识,知道了关于指针的一些概念-> 1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间 2.指针的大小是固定的4/8个字节(32位平台/64位平台&#xf…

构建灵活、高效的HTTP/1.1应用:探索h11库

文章目录 构建灵活、高效的HTTP/1.1应用:探索h11库背景这个库是什么?如何安装这个库?库函数使用方法使用场景常见的Bug及解决方案总结 构建灵活、高效的HTTP/1.1应用:探索h11库 背景 在现代网络应用中,HTTP协议是基础…

基于语音信号的说话人识别

基于语音信号的说话人识别 摘 要 语音是人类相互交流和通信最方便快捷的手段。如何高效地实现语音传输存储或通过 语音实现人机交互,是语音信号处理领域中的重要研究课题。语音信号处理涉及数字信号处理、语音学、语言学、生理学、心理学、计算机科学以及模式识别…

车载软件架构 --- 智能汽车软件

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧…

实际案例说明用基于FPGA的原型来测试、验证和确认IP——如何做到鱼与熊掌兼得?

作者:Philipp Jacobsohn,SmartDV首席应用工程师 Sunil Kumar,SmartDV FPGA设计总监 本系列文章从数字芯片设计项目技术总监的角度出发,介绍了如何将芯片的产品定义与设计和验证规划进行结合,详细讲述了在FPGA上使用硅…

UiPath调用Python脚本的完整示例

一、主要步骤: 1、创建Python脚本 2、安装UiPath.Python.Activities库 3、使用方法: a、添加python作用域 b、加载python脚本 c、调用python方法 d、获取python对象 e、显示Python结果的消息对话框 二、详细步骤 1、安装UiPath.Python.Activities库 …

【简易进度条的实现】

独夜无伴守灯下,清风对面吹............................................................................................. 文章目录 前言 一、【行缓冲区的引入】 1、【问题提出】 2、【\r和\n】 3、【简易倒计时程序】 二、【简易进度条的实现】 process_bar.…

【已解决】cra 配置路径别名 @ 后,出现 ts 报错:找不到模块“@/App”或其相应的类型声明。ts(2307)

cra 配置路径别名 后,出现 ts 报错:找不到模块“/App”或其相应的类型声明。ts(2307) 然后可以在 tsconfig.json 中配置 baseUrl 和 paths : {"compilerOptions": {"target": "es5","lib": [&quo…

es拼音分词器(仅供自己参考)

github地址:https://github.com/infinilabs/analysis-pinyin(各种版本,对接es版本) 拼音分词器存在的问题: 1、是直接将每个字的拼音返回和一段话的拼音首字母返回,不能很好的分词。 2、不会保留中文&am…

为什么大家都在学数字孪生呢?

随着物联网,大数据、人工智能等技术的发展,新一代信息技术与制造业正在深度融合,人们与物理世界的交互方式正在发生转折性的变化。数字化转型正在成为企业的重要战略,而数字孪生则成为全新的焦点。 当下,在数字技术和…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-11

文件下载与邀请翻译者 学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么&#xff…

LLM Observability: Azure OpenAI (一)

作者:来自 Elastic Vinay Chandrasekhar•Andres Rodriguez 我们很高兴地宣布 Azure OpenAI 集成现已全面上市,它提供了对 Azure OpenAI 服务性能和使用的全面可观察性!另请参阅本博客的第 2 部分 虽然我们已经提供了对 LLM 环境的可视性一段…

HTML 基础标签——表格标签<table>

文章目录 1. `<table>` 标签:定义表格2. `<tr>` 标签:定义表格行3. `<th>` 标签:定义表头单元格4. `<td>` 标签:定义表格单元格5. `<caption>` 标签:为表格添加标题6. `<thead>` 标签:定义表格头部7. `<tbody>` 标签:定义表格…

第7章 内容共享

第 7 章 内容共享 bilibili学习地址 github代码地址 本章介绍Android不同应用之间共享内容的具体方式&#xff0c;主要包括&#xff1a;如何利用内容组件在应用之间共享数据&#xff0c;如何使用内容组件获取系统的通讯信息&#xff0c;如何借助文件提供器在应用之间共享文件…

基于 Python 的 Django 框架开发的电影推荐系统

项目简介&#xff1a;本项目是基于 Python 的 Django 框架开发的电影推荐系统&#xff0c;主要功能包括&#xff1a; 电影信息爬取&#xff1a;获取并更新电影数据。数据展示&#xff1a;提供电影数据的列表展示。推荐系统&#xff1a;基于协同过滤算法实现个性化推荐。用户系…

【高等数学】3-2多元函数积分学

1. 二重积分 可以想象你有一块不规则的平面薄板,它在一个平面区域上。二重积分就是用来求这个薄板的质量(假设薄板的面密度函数是)。 把区域划分成许多非常小的小方块(类似于把一块地划分成很多小格子),在每个小方块上,密度近似看成是一个常数,然后把每个小方块的质量加…

喜欢央卫 5.5.5 | 老年人专用电视直播APP

喜欢央卫是一款专门为老年人设计的电视直播APP。这款APP的名字非常简单直白&#xff0c;内容也符合老年人的口味。它提供了常用的央卫频道&#xff0c;还有V4和V6的不同线路&#xff0c;同时支持超多地方频道。界面简洁易用&#xff0c;非常适合教老人如何看电视。 大小&#…

DAY17|二叉树Part03|LeetCode: 654.最大二叉树 、617.合并二叉树 、700.二叉搜索树中的搜索、98.验证二叉搜索树

目录 LeetCode: 654.最大二叉树 基本思路 C代码 LeetCode: 617.合并二叉树 基本思路 C代码 LeetCode: 700.二叉搜索树中的搜索 基本思路 C代码 LeetCode: 98.验证二叉搜索树 中序遍历判断递增 基本思路 C代码 递归法 C代码 LeetCode: 654.最大二叉树 力扣…