LocalDate 类常用方法详解(日期时间类)

news/2024/11/2 18:23:52/

LocalDate 类常用方法详解

        LocalDate 是 Java 8 引入的日期时间API中的一个类,用于表示不含时间和时区的日期(年、月、日)。以下是一些常用的 LocalDate 方法:

创建 LocalDate 实例

now():获取当前日期

java">LocalDate today = LocalDate.now();
System.out.println("当前日期: " + today); // 输出当前日期,如2023-10-01

of():通过年、月、日创建日期

java">LocalDate specificDate = LocalDate.of(2023, 12, 25);
System.out.println("指定日期: " + specificDate); // 输出2023-12-25

parse():从字符串解析出日期

java">LocalDate parsedDate = LocalDate.parse("2023-07-04");
System.out.println("解析后的日期: " + parsedDate); // 输出2023-07-04

日期加减

plusDays()plusWeeks()plusMonths()plusYears():增加天数、周数、月份、年份

java">LocalDate today = LocalDate.now();
LocalDate nextWeek = today.plusWeeks(1);
System.out.println("一周后的日期: " + nextWeek);

minusDays()minusWeeks()minusMonths()minusYears():减少天数、周数、月份、年份

java">LocalDate today = LocalDate.now();
LocalDate lastYear = today.minusYears(1);
System.out.println("去年的今天: " + lastYear);

判断日期属性

isLeapYear():判断是否为闰年

java">LocalDate date = LocalDate.of(2023, 2, 28);
boolean isLeapYear = date.isLeapYear();
System.out.println("是否闰年: " + isLeapYear);

isBefore()isAfter():判断日期是否在另一日期之前或之后

java">boolean isBefore = date.isBefore(LocalDate.now());
System.out.println("是否在当前日期之前: " + isBefore);

获取日期组件

getYear()getMonthValue()getDayOfMonth():获取年、月、日

java">LocalDate date = LocalDate.of(2023, 3, 16);
int year = date.getYear();
int month = date.getMonthValue();
int dayOfMonth = date.getDayOfMonth();
System.out.println("年份: " + year);
System.out.println("月份: " + month);
System.out.println("日: " + dayOfMonth);

getMonth()getDayOfWeek():获取月份和星期

java">Month month = date.getMonth();
DayOfWeek dayOfWeek = date.getDayOfWeek();
System.out.println("月份: " + month);
System.out.println("星期: " + dayOfWeek);

格式化输出

使用 DateTimeFormatter 进行日期的格式化输出

java">LocalDate date = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = date.format(formatter);
System.out.println("格式化后的日期: " + formattedDate);

代码案例

以下是一些 LocalDate 类的代码案例

获取当前年份

java">LocalDate today = LocalDate.now();
int year = today.getYear();
System.out.println("当前年份: " + year);

计算两个日期之间的天数

java">LocalDate startDate = LocalDate.of(2023, 1, 1);
LocalDate endDate = LocalDate.of(2023, 12, 31);
long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
System.out.println("两个日期之间的天数: " + daysBetween);

判断日期是否在特定范围内

java">LocalDate dateToCheck = LocalDate.of(2023, 6, 15);
boolean isWithinRange = !dateToCheck.isBefore(LocalDate.of(2023, 1, 1)) && !dateToCheck.isAfter(LocalDate.of(2023, 12, 31));
System.out.println("日期是否在范围内: " + isWithinRange);

前后端的数据交互

        在前后端的数据交互中,LocalDate 类型的数据通常以字符串的形式传递。后端(如Java)接收到字符串后,可以使用 LocalDate.parse() 方法将其解析为 LocalDate 对象。前端(如JavaScript)需要将日期转换为符合ISO 8601标准的格式(即 YYYY-MM-DD,2023-07-04),然后作为字符串发送到后端。

        以下是前端如何传递 LocalDate 类型数据给后端的步骤:

前端(JavaScript)

  1. 获取日期: 使用JavaScript的 Date 对象获取当前日期或指定日期。

  2. 转换日期格式: 将 Date 对象转换为 YYYY-MM-DD 格式的字符串。

  3. 发送数据: 通过AJAX请求(如使用 fetchXMLHttpRequest)将日期字符串发送到后端。

javascript">// 假设我们有一个日期对象
const date = new Date();// 转换为 ISO 字符串 YYYY-MM-DD
const isoDateString = date.toISOString().split('T')[0];// 使用fetch发送数据到后端
fetch('/your-endpoint', {method: 'POST',headers: {'Content-Type': 'application/json',},body: JSON.stringify({localDate: isoDateString})
})
.then(response => response.json())
.then(data => console.log(data))
.catch((error) => console.error('Error:', error));

后端(Java)

  1. 接收字符串: 后端接收到前端发送的日期字符串。

  2. 解析字符串: 使用 LocalDate.parse() 方法将字符串解析为 LocalDate 对象。

java">import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate;
import java.time.format.DateTimeParseException;@RestController
public class DateController {@PostMapping("/your-endpoint")public String handleDate(@RequestParam("localDate") String localDateString) {try {// 将字符串解析为LocalDate对象LocalDate localDate = LocalDate.parse(localDateString);return "Received date: " + localDate.toString();} catch (DateTimeParseException e) {return "Invalid date format. Please use YYYY-MM-DD.";}}
}

注意事项

  • 确保前后端约定的日期格式一致,通常是ISO 8601标准(YYYY-MM-DD)。
  • 前端在发送数据时,需要确保日期格式正确,并且后端能够正确解析。
  • 后端在解析日期时,应该处理可能的异常,如格式不正确的情况。

http://www.ppmy.cn/news/1543935.html

相关文章

MySQL企业常见架构与调优经验分享

在企业中,MySQL 数据库的合理架构设计和性能调优至关重要,以下是关于 MySQL 企业常见架构与调优经验的分享: 一、MySQL 企业常见架构 主从复制架构 架构特点:由一个主数据库(Master)和多个从数据库(Slave)组成。主数据库负责写入数据,从数据库复制主数据库的事务日志(…

功能强大视频编辑软件 Movavi Video Editor Plus 2024 v24.2.0 中文特别版

Movavi Video Editor Plus中文修改版是一款功能强大的视频制作编辑软件,使用能够帮助用户快速从录制的素材中制作成一个精美的电影,支持进行视频剪辑,支持添加背影、音乐和各种音乐,软件使用简单,无需任何的经验和专业…

QT中TextEdit或者QLineEdit以十六进制显示数组数据

QT中TextEdit以十六进制显示数组数据 在Qt(一种跨平台的C++图形用户界面应用程序开发框架)中,如果你想在QTextEdit中以十六进制格式显示数组数据,你可以使用以下步骤: 创建一个 QTextEdit 控件 在你的Qt应用程序中创建一个 QTextEdit 控件,用于显示文本。QTextEdit *tex…

Scikit-LLM:大模型加持的scikit-learn

作为 Python 和 ML 的初学者,我经常依赖 scikit-learn 来完成几乎所有的项目。它的简单性和多功能性使实现各种算法成为一种令人着迷的体验。 现在,令人兴奋的是,scikit-learn 通过Scikit-LLM引入了 LLM 功能,从而进一步发展。这…

vue2开发 对接后端(go语言)常抛异常情况以及处理方法汇总

背景 在Vue2开发中,与后端(Go语言)接口对接时出现异常通常是由于前后端之间的数据交互出现了问题。常见的异常包括数据格式不匹配、请求方法不匹配、请求头部信息错误、跨域请求问题等。 常见异常 如出现报错提示: json : can…

filebeat+elasticsearch+kibana日志分析

1 默认配置 1.1 filebeat filebeat-7.17.yml,从网关中下载k8s的配置,指定es和kibana的配置 通过kibana查询可以查询到日志了,但此时还不知道具体怎么用。 1.2 kibana 在Discover中创建索引格式:filebeat-*,得到如下图&#xf…

DB-GPT系列(二):DB-GPT部署(镜像一键部署、源码部署)

一、简介 DB-GPT 是一个开源项目,其将大语言模型 LLM 与数据库紧密结合。该项目主要致力于探索如何让预训练的大规模语言模型(例如 GPT)能够直接与数据库进行交互,从而生成更为准确且信息丰富的回答。 DB-GPT部署后能否直接使用…

Linux特种文件系统--tmpfs文件系统

tmpfs类似于RamDisk(只能使用物理内存),使用虚拟内存(简称VM)子系统的页面存储文件。tmpfs完全依赖VM,遵循子系统的整体调度策略。说白了tmpfs跟普通进程差不多,使用的都是某种形式的虚拟内存&a…