Java日期时间操作工具类:DateTimeUtil

在Java开发中,处理日期和时间是一个常见的需求,无论是数据库查询、日志记录还是业务逻辑处理,都离不开对日期时间的精确操作。Java自JDK 8起引入了新的日期时间API,如java.time包下的LocalDate, LocalTime, LocalDateTime, ZonedDateTime等,这些API相比之前的java.util.Datejava.text.SimpleDateFormat提供了更强大、更安全、更易用的功能。本文将介绍一个基于java.time包构建的日期时间操作工具类——DateTimeUtil,并演示其主要功能。

DateTimeUtil工具类代码
 

Java

深色版本

1import java.time.*;
2import java.time.format.DateTimeFormatter;
3import java.time.temporal.TemporalAdjusters;
4
5public class DateTimeUtil {
6
7    private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
8    private static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
9
10    // 获取当前日期时间
11    public static LocalDateTime now() {
12        return LocalDateTime.now();
13    }
14
15    // 获取当前日期
16    public static LocalDate today() {
17        return LocalDate.now();
18    }
19
20    // 将字符串转换为LocalDate
21    public static LocalDate parseDate(String dateStr) {
22        return LocalDate.parse(dateStr, DATE_FORMATTER);
23    }
24
25    // 将字符串转换为LocalDateTime
26    public static LocalDateTime parseDateTime(String dateTimeStr) {
27        return LocalDateTime.parse(dateTimeStr, DATETIME_FORMATTER);
28    }
29
30    // 将LocalDate转换为字符串
31    public static String format(LocalDate date) {
32        return date.format(DATE_FORMATTER);
33    }
34
35    // 将LocalDateTime转换为字符串
36    public static String format(LocalDateTime dateTime) {
37        return dateTime.format(DATETIME_FORMATTER);
38    }
39
40    // 计算两个日期之间的天数差
41    public static long betweenDays(LocalDate startDate, LocalDate endDate) {
42        return ChronoUnit.DAYS.between(startDate, endDate);
43    }
44
45    // 计算两个日期时间之间的秒数差
46    public static long betweenSeconds(LocalDateTime startDateTime, LocalDateTime endDateTime) {
47        return ChronoUnit.SECONDS.between(startDateTime, endDateTime);
48    }
49
50    // 获取指定日期的最后一天
51    public static LocalDate getLastDayOfMonth(LocalDate date) {
52        return date.with(TemporalAdjusters.lastDayOfMonth());
53    }
54
55    // 获取指定日期的下一个月的第一天
56    public static LocalDate getFirstDayOfNextMonth(LocalDate date) {
57        return date.plusMonths(1).with(TemporalAdjusters.firstDayOfMonth());
58    }
59}
使用DateTimeUtil工具类
  1. 获取当前日期时间

     Java 

    深色版本

    1LocalDateTime currentDateTime = DateTimeUtil.now();
    2System.out.println("Current DateTime: " + DateTimeUtil.format(currentDateTime));
  2. 日期字符串转换

     Java 

    深色版本

    1LocalDate parsedDate = DateTimeUtil.parseDate("2023-03-15");
    2System.out.println("Parsed Date: " + DateTimeUtil.format(parsedDate));
  3. 计算日期差

     Java 

    深色版本

    1LocalDate startDate = LocalDate.of(2023, 1, 1);
    2LocalDate endDate = LocalDate.of(2023, 1, 31);
    3long daysBetween = DateTimeUtil.betweenDays(startDate, endDate);
    4System.out.println("Days Between: " + daysBetween);
  4. 获取月份的最后一天和下月第一天

     Java 

    深色版本

    1LocalDate today = DateTimeUtil.today();
    2LocalDate lastDayOfMonth = DateTimeUtil.getLastDayOfMonth(today);
    3LocalDate firstDayOfNextMonth = DateTimeUtil.getFirstDayOfNextMonth(today);
    4System.out.println("Last Day of Month: " + DateTimeUtil.format(lastDayOfMonth));
    5System.out.println("First Day of Next Month: " + DateTimeUtil.format(firstDayOfNextMonth));
总结

DateTimeUtil工具类封装了java.time包下的常用日期时间操作,简化了日期时间的处理流程,提高了代码的可读性和可维护性。通过使用这个工具类,开发者可以更专注于业务逻辑的实现,而不必担心日期时间处理的细节。希望这个工具类能够帮助你在Java开发中更高效、更准确地处理日期时间相关的需求。

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

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

相关文章

# Sharding-JDBC 从入门到精通(10)- 综合案例(三)查询商品与测试及统计商品和总结

Sharding-JDBC 从入门到精通(10)- 综合案例(三)查询商品与测试及统计商品和总结 一、Sharding-JDBC 综合案例-查询商品-dao 1、查询商品:Dao 实现:在 ProductDao 中定义商品查询方法: //查询商…

基于8255的交通灯设计

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

信号与系统笔记分享

文章目录 一、导论信号分类周期问题能量信号和功率信号系统的线性判断时变,时不变系统因果系统判断记忆性系统判断稳定性系统判断 二、信号时域分析阶跃函数冲激函数取样性质四种特性1 筛选特性2 抽样特性3 展缩特性4 卷积特性卷积作用 冲激偶函数奇函数性质公式推导…

异常解决(三)-- Wandb fails with ServiceStartProcessError

原文链接:https://github.com/wandb/wandb/issues/5765 我的环境配置: Python3.8.16 Wandb0.17.4 在使用Wandb记录实验数据时, 报以下错误: ServiceStartProcessError: The wandb service process exited with 1. Ensure that s…

Spring Boot基础篇

快速上手 SpringBoot是由Pivotal团队提高的全新框架,其设计目的是用来简化Spring应用的初始化搭建以及开发过程 入门案例 在Idea创建 创建时要选择Spring Initializr。 Server URL为要连接的网站,默认为官网start.spring.io(访问速度慢&…

数字化精益生产系统--IFS财务管理系统

IFS财务管理系统是一款功能丰富、高效且灵活的企业财务管理软件,广泛应用于多个行业和不同规模的企业中。以下是对IFS财务管理系统的功能设计:

SpringBoot测试类注入Bean失败的原因

针对SpringBoot的测试类&#xff0c;2.2版本之前和之后是不一样的。 2.2版本之后 导包pom.xml 添加test依赖 <!-- starter-test&#xff1a;junit spring-test mockito --> <dependency><groupId>org.springframework.boot</groupId><artifac…

【论文阅读】AsyncDiff: Parallelizing Diffusion Models by Asynchronous Denoising

论文&#xff1a;2406.06911 (arxiv.org) 代码&#xff1a;czg1225/AsyncDiff: Official implementation of "AsyncDiff: Parallelizing Diffusion Models by Asynchronous Denoising" (github.com) 简介&#xff1a;异步去噪并行化扩散模型。提出了一种新的扩散模…

文本编辑(EditPlus)快捷键

EditPlus的快捷键其实也是其他文本编辑器的快捷键&#xff0c;这些快捷键是通用的&#xff1b; CTRLZ: 撤回&#xff1b; CTRLY&#xff1a;撤回撤回&#xff1b; CTRLA&#xff1a;全选 Home: 回到行首&#xff0c;在此基础上&#xff0c;Shiftend: 选中该行&#xff1b;…

【Java】垃圾回收学习笔记(一):判定对象的存活或死亡?Root Search 根可达算法

文章目录 1. 引用计数法优点缺点 2. 可达性分析 Root Search2.1 那些对象是GC Roots2.2 引用的分类 3. 回收方法区Reference 最近上班地铁上偶尔看看书&#xff0c;周末有空理一下&#xff0c;做个笔记。 下面说说GC过程中如何判断对象是否存活。 1. 引用计数法 用于微软COM&a…

文心一言 VS 讯飞星火 VS chatgpt (297)-- 算法导论22.1 1题

一、给定有向图的邻接链表&#xff0c;需要多长时间才能计算出每个结点的出度(发出的边的条数)&#xff1f;多长时间才能计算出每个结点的入度(进入的边的条数)&#xff1f;如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 计算出度 对于有向图的邻接链表表示&a…

redolog的刷盘策略

mysql通过innodb_flush_log_at_trx_commit配置来控制redo log的写盘时机。 0&#xff1a;延迟写。提交事务时不会将redo log写入os buffer&#xff0c;而是每隔1秒将redo log写入os buffer并调用fsync()刷入磁盘。系统崩溃会丢失一秒钟的数据。 1&#xff1a;实时写&#xff0c…

基于OpenCv的快速图片颜色交换,轻松实现图片背景更换

图片颜色更换 图片颜色转换 当我们有2张图片,很喜欢第一张图片的颜色,第2张图片的前景照片,很多时候我们需要PS进行图片的颜色转换,这当然需要我们有强大的PS功底,当然小编这里不是介绍PS的,我们使用代码完全可以代替PS 进行图片的颜色转换 图片颜色转换步骤: 步骤…

MySQL高级----详细介绍MySQL中的锁

概述 锁是计算机协调多个进程或线程并发访问某一资源的机制&#xff0c;为了解决数据访问的一致性和有效性问题。在数据库中&#xff0c;除传统的计算资源(CPU、RAN、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、…

U盘非安全退出后的格式化危机与高效恢复策略

在数字化时代&#xff0c;U盘作为数据存储与传输的重要工具&#xff0c;其数据安全备受关注。然而&#xff0c;一个常见的操作失误——U盘没有安全退出便直接拔出&#xff0c;随后再插入时却遭遇“需要格式化”的提示&#xff0c;这不仅让用户措手不及&#xff0c;更可能意味着…

vs code格式化

目录 vs code格式化 函数参数不换行 禁止 pylance 插件自动添加 import vs code格式化 函数参数不换行 def generate_canvas_box(self,corners,idxs,thickness2,data_idxNone,debug False): 方法四&#xff1a;使用 VS Code 的自定义格式化设置 打开 VS Code 设置&#xff…

【软考】SSH

目录 1. 说明2.特点2.1 安全性2.2 灵活性2.3 功能性2.3 易用性 3. 工作原理 1. 说明 1.Secure Shell。2.是一种加密的网络协议&#xff0c;用于安全地访问远程计算机或服务器。3.SSH提供了加密的通道&#xff0c;使得用户可以通过这个通道在本地计算机和远程计算机之间安全地传…

vivado DCI_CASCADE、DELAY_BYPASS

DCI_CASCADE DCI_CASCADE定义了一组高性能&#xff08;HP&#xff09;之间的主从关系 I/O银行。数字控制阻抗&#xff08;DCI&#xff09;参考电压从 主I/O库到从I/O库。 DCI_CASCADE指定哪些相邻库使用DCI级联功能&#xff0c;从而共享 具有主组的参考电阻器。如果同一I/O组列…

【无标题】AMAZINGIC晶焱科技:汽车电子 EOS 测试与防护

因牵涉到人身安全且需确保车辆正常行驶&#xff0c;车用产品的测试条件会比一般消费性产品还要严苛许多&#xff0c;大部分采用的EMC测试法规都是车载专用标准&#xff0c;因此汽车电子的验证几乎是独立于其他领域的。本文将集成晶焱科技深耕车用市场的经验&#xff0c;探讨汽车…

Spring Boot应用使用GraalVM本地编译相关配置

1. 介绍 Java应用程序可以通过Graalvm Native Image提前编译生成与本地机器相关的可执行文件。与在JVM执行java程序相比&#xff0c;Native Image占用内存更小和启动速度更快。 从spring boot3开始支持GraalVM Native Image&#xff0c;因此要使用此特性&#xff0c;需要把sp…