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)
-
获取日期: 使用JavaScript的
Date
对象获取当前日期或指定日期。 -
转换日期格式: 将
Date
对象转换为YYYY-MM-DD
格式的字符串。 -
发送数据: 通过AJAX请求(如使用
fetch
或XMLHttpRequest
)将日期字符串发送到后端。
// 假设我们有一个日期对象
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)
-
接收字符串: 后端接收到前端发送的日期字符串。
-
解析字符串: 使用
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
)。 - 前端在发送数据时,需要确保日期格式正确,并且后端能够正确解析。
- 后端在解析日期时,应该处理可能的异常,如格式不正确的情况。
相关文章:
LocalDate 类常用方法详解(日期时间类)
LocalDate 类常用方法详解 LocalDate 是 Java 8 引入的日期时间API中的一个类,用于表示不含时间和时区的日期(年、月、日)。以下是一些常用的 LocalDate 方法: 创建 LocalDate 实例 now():获取当前日期 LocalDate t…...
kmp desktop实现excel预览
先将excel转paf https://blog.csdn.net/qq_42761569/article/details/121699594 package utilimport com.aspose.cells.License import com.aspose.cells.PdfSaveOptions import com.aspose.cells.Workbook import com.geolo.desktop.common.utils.LogUtils import java.io.Fi…...

OB_GINS_day3
这里写目录标题 实现当前状态初始化实现预积分的初始化由于此时preintegration_options 是3(也就是考虑odo以及earth rotation)为预积分的容器添加需要积分的IMU积分因子接下来是添加新的IMU到preintegration中 实现当前状态初始化 这个state_curr的主要…...

【Python3】【力扣题】405. 数字转换为十六进制数
【力扣题】题目描述: 题意理解:(不允许使用库函数) 数字等于0,则结果为0, 数字小于0,则补码运算,即最高位(32位)为1,其余全部取反,再加…...

记录一次企业外部通过ssh 连接数据库的事DBeaver
情况大概是这样,公司算法供应商开通了连接某个服务器A的权限,但是数据库x是在另一台服务器B上。 直接通过外部连接数据库是不行的,需要借用服务器A来进行访问x 使用软件:DBeaver, 数据库x类型:oracle 需要的信息&am…...

中聚企服:中聚AI女娲大模型,企业难题迎刃而解!
在这个瞬息万变的商业世界里,企业面临的挑战愈发复杂多样。小到日常文书和规章制度,大到工商财税和知识产权保护,每一个环节都至关重要。为了帮助中小企业在激烈的市场竞争中脱颖而出,中聚企服在官方小程序重磅上线了一款革命性产…...
对镜像精简
dive工具,用来优化镜像大小 ENV命令合并 ENV DEBUG_PORT8777 \HTTP_PORT12080 \PROGRAM_FILE_HOME_UPORTAL_CONF/home/zenap/uportal/confWORKDIR usr/src/app,会切换到这个目录 使用COPY --chown 修改属主,不要使用RUN chown 容器内非root…...
老电脑不能装纯净版windows
手上有一台2016年的老笔记本电脑,用了8年,基本上能换的都换了一遍,散热风扇换了,键盘换了,屏幕换了,扬声器也换了,内存也换大了,甚至都换过固态硬盘,但是CPU没法换&#…...
在Python中实现一个简单的社交媒体应用
在Python中实现一个简单的社交媒体应用 社交媒体应用是现代互联网的重要组成部分,允许用户分享信息、交流和互动。在这篇博文中,我们将使用Python构建一个简单的社交媒体应用,涵盖用户注册、发布动态、评论和查看动态等基本功能。我们将使用Flask框架作为后端,SQLite作为数…...

pytest高版本兼容test_data[“log“] = _handle_ansi(“\n“.join(logs))错误
一、问题现象: 执行seleniumpytest结束时报: INTERNALERROR> File "D:\workspace\pytestframe\.venv\Lib\site-packages\pytest_html\report_data.py", line 141, in add_test INTERNALERROR> test_data["log"] _handle_ansi(&q…...

Redis技术入门与实践指南
一、Redis基础知识 1、概念 Redis是一个开源的、遵循BSD协议的、基于内存的而且目前比较流行的键值数据库(key-value database),是一个非关系型数据库,redis 提供将内存通过网络远程共享的一种服务,提供类似功能的 还有memcached࿰…...

如何一键完成20个Oracle实例运维脚本部署
在日常的运维工作中,常常是一个人需要管理维护数个数十个数据库实例,如果是开源类集群如mysql,PG等可能更多;在没有商业的集中管理平台的情况下,如何快速的部署监控或者运维脚本,是一个值得探讨的问题&…...
【C++刷题】力扣-#598-区间加法 II
题目描述 给你一个 m x n 的矩阵 M和一个操作数组 op 。矩阵初始化时所有的单元格都为 0 。ops[i] [ai, bi] 意味着当所有的 0 < x < ai 和 0 < y < bi 时, M[x][y] 应该加 1。 在 执行完所有操作后 ,计算并返回 矩阵中最大整数的个数 。 示…...

优雅的LUA数据记录方法-serpent序列化+LUA Table
目录 简述如何集成?如何使用序列化 反序列化 参考 简述 项目里需要使用LUA脚本将数据记录到文件,要方便的增加、查找、删除,要方便的加载与存回。 使用序列化/反序列化 lua table可以很容易实现这些功能。 序列化将table转换为字符串 反序列…...

初始JavaEE篇——多线程(4):wait、notify,饿汉模式,懒汉模式,指令重排序
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:JavaEE 目录 wait、notify 方法 多线程练习 单例模式 饿汉模式 懒汉模式 指令重排序 wait、notify 方法 wait 和 我们前面学习的sleep…...
Apache Solr 身份认证绕过导致任意文件读取漏洞复现(CVE-2024-45216)
0x01 产品简介 Apache Solr是一个开源的搜索平台,基于流行的Apache Lucene库构建。它提供了一个强大的全文搜索功能,能够快速处理大量数据,并支持复杂的搜索操作。并且是一个独立的企业级搜索应用服务器,它采用Java开发,并基于Apache Lucene实现。Solr提供了类似于Web-Se…...

C#整合Ollama实现本地LLMs调用
前言 近两年AIGC发展的非常迅速,从刚开始的只有ChatGPT到现在的很百家争鸣。从开始的大参数模型,再到后来的小参数模型,从一开始单一的文本模型到现在的多模态模型等等。随着一起进步的不仅仅是模型的多样化,还有模型的使用方式。…...
C++基于opencv的视频质量检测--图像抖动检测
文章目录 0.引言1. 原始代码分析2. 优化方案3. 优化后的代码4. 代码详细解读 0.引言 视频质量图像抖动检测已在C基于opencv4的视频质量检测中有所介绍,本文将详细介绍其优化版本。 1. 原始代码分析 首先,我们来看图像抖动检测的原始代码: …...
Cuda By Example - 11 (Texture Memory 2-D)
跟1D一样,2D的代码也没有运行过。旧的方法看看就好。 声明二维Texture texture<float, 2> texConstSrc; texture<float, 2> texIn; texture<float, 2> texOut; 访问二维Texture 使用2D的Texture的便利性体现在blend_kernel函数里。不再需要通…...
Go匿名结构体使用场景
1. 定义 在 Go 语言中,匿名结构体(Anonymous Struct)是一种没有显式命名的结构体类型。你可以直接在代码中定义并使用匿名结构体,而不需要为其定义一个单独的类型名称。匿名结构体通常用于临时数据结构或一次性使用的场景。 匿名…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...