Hutool-Java工具库

日期时间

1、DateUtil

获取当前时间
import cn.hutool.core.date.DateUtil;import java.util.Calendar;
import java.util.Date;
        //当前时间字符串,格式:yyyy-MM-dd HH:mm:ssDate date = DateUtil.date();Date date2 = DateUtil.date(Calendar.getInstance());Date date3 = DateUtil.date(System.currentTimeMillis());String now = DateUtil.now();//当前日期字符串,格式:yyyy-MM-ddString today= DateUtil.today();
字符串转日期
        String dateStr = "1956/09/12";/*传入一个字符串 返回 Date,默认格式为yyyy-MM-dd HH:mm:ss,且无法更改使用 DateUtil.parse(dateStr,"yyyy-MM-dd");类似这种方式也不行,会报错*/Date date = DateUtil.parse(dateStr);
格式化日期
        /*传入一个Date 返回 字符串,可以自定义日期格式*/String format = DateUtil.format(date, "yyyy-MM-dd");/*传入一个Date 返回 字符串,常用格式的格式化:yyyy-MM-dd*/String formatDate  = DateUtil.formatDate(date);/*传入一个Date 返回 字符串,常用格式的格式化:yyyy-MM-dd HH:mm:ss*/String formatDateTime = DateUtil.formatDateTime(date);/*传入一个Date 返回 字符串,常用格式的格式化:HH:mm:ss*/String formatTime = DateUtil.formatTime(date);
获取年月日
        /*传入Date,获取年份*/int year = DateUtil.year(date);/*传入Date,获取月份,从 0 开始计算的,需要 +1*/int month = DateUtil.month(date);/*传入Date,获取日*/int day = DateUtil.dayOfMonth(date);/*传入Date,获取月份枚举,月份对应的英文*/Month monthEnum = DateUtil.monthEnum(date);
获取开始、结束
        /*传入Date,获取某天的开始,默认格式:1956-09-12 00:00:00*/Date beginOfDay = DateUtil.beginOfDay(date);/*传入Date,获取某天的结束,默认格式:1956-09-12 23:59:59*/Date endOfDay = DateUtil.endOfDay(date);/*传入Date,获取某月的开始,默认格式:1956-09-01 00:00:00*/Date beginOfMonth = DateUtil.beginOfMonth(date);/*传入Date,获取某月的结束,默认格式:1956-09-30 23:59:59*/Date endOfMonth = DateUtil.endOfMonth(date);/*传入Date,获取某年的开始,默认格式:1956-01-01 00:00:00*/DateTime beginOfYear = DateUtil.beginOfYear(date);/*传入Date,获取某月的结束,默认格式:1956-12-31 23:59:59*/DateTime endOfYear = DateUtil.endOfYear(date);
日期时间偏移
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;

偏移天、月、时 

        /*偏移几天,传入一个Date,输出格式:yyyy-MM-dd HH:mm:ss 没有 HH:mm:ss 会默认 00:00:00正数为:往后偏移负数为:往前偏移为当月第一天或最后一天,自动偏移到上月或下月,偏移后到了上年或下年也一样*/Date offset = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);/*默认偏移“日”,传入一个Date,输出格式:yyyy-MM-dd HH:mm:ss 没有 HH:mm:ss 会默认 00:00:00正数为:往后偏移负数为:往前偏移为当月第一天或最后一天,自动偏移到上月或下月,偏移后到了上年或下年也一样*/DateTime offsetDay = DateUtil.offsetDay(date, 2);/*默认偏移“月”,传入一个Date,输出格式:yyyy-MM-dd HH:mm:ss 没有 HH:mm:ss 会默认 00:00:00正数为:往后偏移负数为:往前偏移为当年第一月或最后一月,自动偏移到上年或下年*/DateTime offsetMonth = DateUtil.offsetMonth(date, 2);/*默认偏移“时”,传入一个Date,输出格式:yyyy-MM-dd HH:mm:ss 正数为:往后偏移,没有 HH:mm:ss 会默认从后一天的 00:00:00 开始偏移负数为:往前偏移,没有 HH:mm:ss 会默认从前一天的 24:00:00 开始偏移*/DateTime offsetHour = DateUtil.offsetHour(date, 2);

昨天、明天、往前七天、往后七天、往前一月、往后一月 

        /*昨天,返回昨天的当前时间,例如:今天为:1956-09-12 05:20:00返回结果为:1956-09-11 05:20:00*/DateTime yesterday = DateUtil.yesterday();/*明天,返回明天的当前时间,例如:今天为:1956-09-12 05:20:00返回结果为:1956-09-13 05:20:00*/DateTime tomorrow = DateUtil.tomorrow();/*上周,实际为:往前七天*/DateTime lastWeek = DateUtil.lastWeek();/*下周,实际为:往后七天*/DateTime nextWeek = DateUtil.nextWeek();/*上个月,实际为:上月的当前时间今天为:1956-09-12 05:20:00返回结果为:1956-08-12 05:20:00*/DateTime lastMonth = DateUtil.lastMonth();/*下个月,实际为:下月的当前时间今天为:1956-09-12 05:20:00返回结果为:1956-10-12 05:20:00*/DateTime nextMonth = DateUtil.nextMonth();
☆日期时间差

计算相差天数,返回 long

        /*计算相差天数,传入两个Date,返回long,只比较 yyyy-MM-dd 不比较 HH:mm:ssdate = 1956-09-12date2 = 1956-09-15差值为 3【12、13、14、15】应该是只算了13、14、15,为 3第三个参数为 false 时,与 between 方法一致*/long betweenDay = DateUtil.betweenDay(date, date2, true);/*计算相差天数,传入两个Date,返回long,只比较 yyyy-MM-dd 不比较 HH:mm:ssdate = 1956-09-12date2 = 1956-09-15差值为 3【12、13、14、15】应该是只算了13、14,为 2*/long betweenDAY = DateUtil.between(date, date2, DateUnit.DAY);//精确到毫秒,返回结果为毫秒数long betweenMS = DateUtil.between(date, date2, DateUnit.MS);//精确到秒,返回结果为秒数long betweenSECOND = DateUtil.between(date, date2, DateUnit.SECOND);//精确到分钟,返回结果为分钟数long betweenMINUTE = DateUtil.between(date, date2, DateUnit.MINUTE);//精确到小时,返回结果为小时数long betweenHOUR = DateUtil.between(date, date2, DateUnit.HOUR);

格式化时间差

XX天XX小时XX分XX秒

 传入两个Date,计算差值,第三个参数为精确等级(时、分、秒、毫秒等)

String formatBetween = DateUtil.formatBetween(date, date2, BetweenFormatter.Level.MINUTE);
String formatBetween = DateUtil.formatBetween(DateUtil.between(date,date2,DateUnit.MS), BetweenFormatter.Level.MINUTE);
星座、属相
// "天秤座"
String zodiac = DateUtil.getZodiac(9, 12);// "猴"
String chineseZodiac = DateUtil.getChineseZodiac(1956);
年龄、闰年
        //年龄int age = DateUtil.ageOfNow("1956-09-12");//是否闰年boolean leapYear = DateUtil.isLeapYear(2003);

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

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

相关文章

ceph介绍和搭建

1 为什么要使用ceph存储 什么是对象存储? 对象存储并没有向文件系统那样划分为元数据区域和数据区域,而是按照不同的对象进行存储,而且每个对象内部维护着元数据和数据区域。因此每个对象都有自己独立的管理格式。 对象存储优点&#xff1a…

BootStrap复选框多选,页面初始化选中处理

以isExecuted字段为例数据库设置为varchar类型 新增页面 <div class"row"><div class"col-sm-6"><div class"form-group"><label class"col-sm-4 control-label">部门协调&#xff1a;</label><di…

这些场景不适合用Selenium自动化!看看你踩过哪些坑?

Selenium是自动化测试中的一大主力工具&#xff0c;其强大的网页UI自动化能力&#xff0c;让测试人员可以轻松模拟用户操作并验证系统行为。然而&#xff0c;Selenium并非万能&#xff0c;尤其是在某些特定场景下&#xff0c;可能并不适合用来自动化测试。本文将介绍Selenium不…

AI大模型在尽职调查中的应用场景与客户案例

应用场景 1. 企业IPO尽职调查中的文档处理与合规审查 在券商投行进行企业IPO尽职调查过程中&#xff0c;企业需要提交大量的财务报表、历史沿革文件、法律合同等资料。这些文件涉及多个部门&#xff0c;往往存在信息分散、合规性复杂、数据量庞大等问题。思通数科的AI能力平…

react-router-dom 库作用

react-router-dom是一个用于在 React 应用中实现路由功能的重要库 一、实现页面导航 1. 声明式路由定义 1.1 基本原理 使用react-router-dom可以在代码中直接定义一个路由规则&#xff0c;如从/home路径导航到Home组件。 1.2 代码示例 Router 路由根容器&#xff0c;Rout…

[C++]内联函数和nullptr

> &#x1f343; 本系列为初阶C的内容&#xff0c;如果感兴趣&#xff0c;欢迎订阅&#x1f6a9; > &#x1f38a;个人主页:[小编的个人主页])小编的个人主页 > &#x1f380; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 > ✌️ &#x1f91e; &#x1…

15分钟学 Go 实战项目三 : 实时聊天室(学习WebSocket并发处理)

实时聊天室&#xff1a;学习WebSocket并发处理 目标概述 在本项目中&#xff0c;我们将创建一个实时聊天室&#xff0c;使用Go语言和WebSocket来处理并发消息交流。这将帮助你深入理解WebSocket协议的工作原理以及如何在Go中实现并发处理。 1. 项目需求 功能需求 用户可以…

thinkphp6 使用workerman扩展开发tcp应用

代码 <?phpnamespace app\shop\controller;use think\worker\Server;class Tcp extends Server {protected $socket tcp://127.0.0.1:12345;protected $option [name > "order_tcp",count > 1,pidFile > worker.pid, // daemonize > true,…

工业4.0时代下的人工智能新发展

摘要&#xff1a;随着德国工业4.0时代以及中国制造2025的提出&#xff0c;工业智能化的改革的时代正逐渐到来&#xff0c;然而我国整体工业水平仍然处于工业2.0水平。围绕工业4.0中智能工厂、智能生产、智能物流这三大主题&#xff0c;结合国内外研究现状&#xff0c;对人工智能…

一步一步从asp.net core mvc中访问asp.net core WebApi

"从asp.net core mvc中访问asp.net core WebApi"看到这个标题是不是觉得很绕口啊&#xff0c;但的确就是要讲一讲这样的访问。前面我们介绍了微信小程序访问asp.net core webapi(感兴趣的童鞋可以看看前面的博文有关WEBAPI的搭建)&#xff0c;这里我们重点不关心如何…

【Python】关于python中overload装饰器详解

Python不像C、Java等语言可以进行函数的重载。Python是不可以进行函数重载的。下面的例子&#xff0c;虽然我们定义了三个test函数&#xff0c;但是在局部命名空间下&#xff0c;只有一个test函数&#xff0c;就是最有一个&#xff0c;也就是说最后一个test覆盖了前两个test。 …

Qt 获取当前系统中连接的所有USB设备的信息 lsusb版

Qt 获取当前系统中连接的所有USB设备的信息 lsusb版 flyfish 环境 Ubuntu22.04 Qt 6.2.4 实现的功能 枚举USB设备&#xff1a;使用lsusb命令获取当前系统中连接的所有USB设备的信息。 解析设备信息&#xff1a;将lsusb命令的输出按行分割&#xff0c;并提取每行中的总线号、…

使用git进行多人协作开发项目流程

使用git进行多人协作开发项目流程 当然&#xff0c;以下是一个整合了分支管理、Pull Request流程以及日常Git操作的完整GitHub多人协作开发教程。这个教程将从仓库的创建和设置开始&#xff0c;一直到开发流程和最终的代码合并&#xff0c;形成一个完整的工作流程。 完整的Gi…

[面试]Mysql的锁机制

一、锁的基本概念 MySQL中的锁主要用于控制多个事务对数据库资源的并发访问&#xff0c;以确保数据的一致性和完整性。锁机制是数据库并发控制的核心&#xff0c;通过锁定数据库中的资源来防止并发操作引发的数据冲突。 二、锁的分类 MySQL的锁按照作用范围可以分为表级锁和行…

计算2000-2100年,阳历11月11日,与阴历10月1日重叠的年份

# 计算2000-2100年&#xff0c;阳历11月11日&#xff0c;与阴历10月1日重叠的年份from datetime import datetime from lunardate import LunarDatedef find_matching_years(start_year, end_year):matching_years []for year in range(start_year, end_year 1):solar_date …

JVM学习之路(5)垃圾回收

目录 Java垃圾回收 方法区回收 方法区的回收 堆内存回收 引用计数法和可达性分析算法 查看GC Root 五种对象引用 软引用 ​编辑 弱引用 虚引用和终结器引用 垃圾回收算法&#xff1a; 垃圾回收算法的历史和分类 垃圾回收算法的评价标准 标记清除算法 复制算法 标记整理算法 分代…

ubuntu 20.04 NVIDIA驱动、cuda、cuDNN安装

1. NVIDIA驱动 系统设置->软件和更新->附加驱动->选择NVIDIA驱动->应用更改。该界面会自动根据电脑上的GPU显示推荐的NVIDIA显卡驱动。 运行nvidia-smi: NVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver. Make sure that the lat…

docker如何实时查看项目的日志

1. 使用docker logs命令 基本语法和原理&#xff1a;docker logs命令用于获取容器的日志输出。默认情况下&#xff0c;它会显示容器启动后到当前时间的所有日志内容。当你在容器内的应用程序将日志输出到标准输出&#xff08;stdout&#xff09;或标准错误输出&#xff08;std…

Ubuntu18.04+ROS环境+moveit UR5机械臂仿真

目录 仿真环境&#xff1a; 1.下载Universal Robots机器人功能包 2.运行 Gazebo中的仿真模型 3.运行moveit运动规划 4.运行rviz并进行轨迹规划 仿真环境&#xff1a; 本文使用版本&#xff1a;Ubuntu18.04 ros版本&#xff1a;ros-melodic-desktop-full&#xff0c;安装…

C++11新特性(二)

目录 一、C11的{} 1.初始化列表 2.initializer_list 二、可变参数模版 1.语法与原理 2.包扩展 3.empalce接口 三、新的类功能 四、lambda 1.语法 2.捕捉列表 3.原理 五、句装器 1.function 2.bind 一、C11的{} 1.初始化列表 C11以后想统⼀初始化⽅式&#xff0…