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

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

LocalDate 类常用方法详解

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

创建 LocalDate 实例

now():获取当前日期

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

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

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

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

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

日期加减

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

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

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

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

判断日期属性

isLeapYear():判断是否为闰年

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

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

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

获取日期组件

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

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():获取月份和星期

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

格式化输出

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

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

代码案例

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

获取当前年份

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

计算两个日期之间的天数

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);

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

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)将日期字符串发送到后端。

// 假设我们有一个日期对象
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 对象。

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.lryc.cn/news/473951.html

相关文章:

  • kmp desktop实现excel预览
  • OB_GINS_day3
  • 【Python3】【力扣题】405. 数字转换为十六进制数
  • 记录一次企业外部通过ssh 连接数据库的事DBeaver
  • 中聚企服:中聚AI女娲大模型,企业难题迎刃而解!
  • 对镜像精简
  • 老电脑不能装纯净版windows
  • 在Python中实现一个简单的社交媒体应用
  • pytest高版本兼容test_data[“log“] = _handle_ansi(“\n“.join(logs))错误
  • Redis技术入门与实践指南
  • 如何一键完成20个Oracle实例运维脚本部署
  • 【C++刷题】力扣-#598-区间加法 II
  • 优雅的LUA数据记录方法-serpent序列化+LUA Table
  • 初始JavaEE篇——多线程(4):wait、notify,饿汉模式,懒汉模式,指令重排序
  • Apache Solr 身份认证绕过导致任意文件读取漏洞复现(CVE-2024-45216)
  • C#整合Ollama实现本地LLMs调用
  • C++基于opencv的视频质量检测--图像抖动检测
  • Cuda By Example - 11 (Texture Memory 2-D)
  • Go匿名结构体使用场景
  • Vue 发布十年了!你知道我这十年是怎么过的吗?
  • Unity 6 来袭
  • SpringMVC课时1
  • 【小白学机器学习30】样本统计的核心参数:均值/期望,方差,标准差,标准值。
  • flink1.17.2安装和使用
  • C向C++入门-- C语言填坑
  • 扫雷游戏(C语言详解)
  • 信刻全自动光盘摆渡系统
  • 计算机网络的数据链路层
  • 从0开始搭建一个生产级SpringBoot2.0.X项目(三)SpringBoot接口统一返回和全局异常处理
  • Mybatis-plus-扩展功能