使用DateUtil工具类偏移日期

news2024/11/25 6:06:52

使用DateUtil工具类偏移日期

  • 一、依赖
  • 二、源码
  • 三、示例代码


一、依赖

        <!--工具依赖-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.16</version>
        </dependency>

二、源码

部分代码

	// --------------------------------------------------- Offset for now

	/**
	 * 昨天
	 *
	 * @return 昨天
	 */
	public static DateTime yesterday() {
		return offsetDay(new DateTime(), -1);
	}

	/**
	 * 明天
	 *
	 * @return 明天
	 * @since 3.0.1
	 */
	public static DateTime tomorrow() {
		return offsetDay(new DateTime(), 1);
	}

	/**
	 * 上周
	 *
	 * @return 上周
	 */
	public static DateTime lastWeek() {
		return offsetWeek(new DateTime(), -1);
	}

	/**
	 * 下周
	 *
	 * @return 下周
	 * @since 3.0.1
	 */
	public static DateTime nextWeek() {
		return offsetWeek(new DateTime(), 1);
	}

	/**
	 * 上个月
	 *
	 * @return 上个月
	 */
	public static DateTime lastMonth() {
		return offsetMonth(new DateTime(), -1);
	}

	/**
	 * 下个月
	 *
	 * @return 下个月
	 * @since 3.0.1
	 */
	public static DateTime nextMonth() {
		return offsetMonth(new DateTime(), 1);
	}

	/**
	 * 偏移毫秒数
	 *
	 * @param date   日期
	 * @param offset 偏移毫秒数,正数向未来偏移,负数向历史偏移
	 * @return 偏移后的日期
	 */
	public static DateTime offsetMillisecond(Date date, int offset) {
		return offset(date, DateField.MILLISECOND, offset);
	}

	/**
	 * 偏移秒数
	 *
	 * @param date   日期
	 * @param offset 偏移秒数,正数向未来偏移,负数向历史偏移
	 * @return 偏移后的日期
	 */
	public static DateTime offsetSecond(Date date, int offset) {
		return offset(date, DateField.SECOND, offset);
	}

	/**
	 * 偏移分钟
	 *
	 * @param date   日期
	 * @param offset 偏移分钟数,正数向未来偏移,负数向历史偏移
	 * @return 偏移后的日期
	 */
	public static DateTime offsetMinute(Date date, int offset) {
		return offset(date, DateField.MINUTE, offset);
	}

	/**
	 * 偏移小时
	 *
	 * @param date   日期
	 * @param offset 偏移小时数,正数向未来偏移,负数向历史偏移
	 * @return 偏移后的日期
	 */
	public static DateTime offsetHour(Date date, int offset) {
		return offset(date, DateField.HOUR_OF_DAY, offset);
	}

	/**w
	 * 偏移天
	 *
	 * @param date   日期
	 * @param offset 偏移天数,正数向未来偏移,负数向历史偏移
	 * @return 偏移后的日期
	 */
	public static DateTime offsetDay(Date date, int offset) {
		return offset(date, DateField.DAY_OF_YEAR, offset);
	}

	/**
	 * 偏移周
	 *
	 * @param date   日期
	 * @param offset 偏移周数,正数向未来偏移,负数向历史偏移
	 * @return 偏移后的日期
	 */
	public static DateTime offsetWeek(Date date, int offset) {
		return offset(date, DateField.WEEK_OF_YEAR, offset);
	}

	/**
	 * 偏移月
	 *
	 * @param date   日期
	 * @param offset 偏移月数,正数向未来偏移,负数向历史偏移
	 * @return 偏移后的日期
	 */
	public static DateTime offsetMonth(Date date, int offset) {
		return offset(date, DateField.MONTH, offset);
	}

	/**
	 * 获取指定日期偏移指定时间后的时间,生成的偏移日期不影响原日期
	 *
	 * @param date      基准日期
	 * @param dateField 偏移的粒度大小(小时、天、月等){@link DateField}
	 * @param offset    偏移量,正数为向后偏移,负数为向前偏移
	 * @return 偏移后的日期
	 */
	public static DateTime offset(Date date, DateField dateField, int offset) {
		return dateNew(date).offset(dateField, offset);
	}
	// ------------------------------------ Offset end ----------------------------------------------

部分代码


/**
 * 日期各个部分的枚举<br>
 * 与Calendar相应值对应
 *
 * @author Looly
 *
 */
public enum DateField {

	/**
	 * 世纪
	 *
	 * @see Calendar#ERA
	 */
	ERA(Calendar.ERA),
	/**
	 * 年
	 *
	 * @see Calendar#YEAR
	 */
	YEAR(Calendar.YEAR),
	/**
	 * 月
	 *
	 * @see Calendar#MONTH
	 */
	MONTH(Calendar.MONTH),
	/**
	 * 一年中第几周
	 *
	 * @see Calendar#WEEK_OF_YEAR
	 */
	WEEK_OF_YEAR(Calendar.WEEK_OF_YEAR),
	/**
	 * 一月中第几周
	 *
	 * @see Calendar#WEEK_OF_MONTH
	 */
	WEEK_OF_MONTH(Calendar.WEEK_OF_MONTH),
	/**
	 * 一月中的第几天
	 *
	 * @see Calendar#DAY_OF_MONTH
	 */
	DAY_OF_MONTH(Calendar.DAY_OF_MONTH),
	/**
	 * 一年中的第几天
	 *
	 * @see Calendar#DAY_OF_YEAR
	 */
	DAY_OF_YEAR(Calendar.DAY_OF_YEAR),
	/**
	 * 周几,1表示周日,2表示周一
	 *
	 * @see Calendar#DAY_OF_WEEK
	 */
	DAY_OF_WEEK(Calendar.DAY_OF_WEEK),
	/**
	 * 天所在的周是这个月的第几周
	 *
	 * @see Calendar#DAY_OF_WEEK_IN_MONTH
	 */
	DAY_OF_WEEK_IN_MONTH(Calendar.DAY_OF_WEEK_IN_MONTH),
	/**
	 * 上午或者下午
	 *
	 * @see Calendar#AM_PM
	 */
	AM_PM(Calendar.AM_PM),
	/**
	 * 小时,用于12小时制
	 *
	 * @see Calendar#HOUR
	 */
	HOUR(Calendar.HOUR),
	/**
	 * 小时,用于24小时制
	 *
	 * @see Calendar#HOUR
	 */
	HOUR_OF_DAY(Calendar.HOUR_OF_DAY),
	/**
	 * 分钟
	 *
	 * @see Calendar#MINUTE
	 */
	MINUTE(Calendar.MINUTE),
	/**
	 * 秒
	 *
	 * @see Calendar#SECOND
	 */
	SECOND(Calendar.SECOND),
	/**
	 * 毫秒
	 *
	 * @see Calendar#MILLISECOND
	 */
	MILLISECOND(Calendar.MILLISECOND);

	// ---------------------------------------------------------------
}

三、示例代码

    @Test
    void test() {
        //获取当前时间(默认yyyy-MM-dd HH:mm:ss格式)
        log.info(DateUtil.now());//当前时间
        log.info(DateUtil.yesterday().toString());//获取昨天
        log.info(DateUtil.offsetDay(DateUtil.date().toJdkDate(),1).toString());//获取一天后
        log.info(DateUtil.offsetMonth(DateUtil.date().toJdkDate(),1).toString());//获取一个月后
        log.info(DateUtil.offset(new Date(),DateField.YEAR,10).toString());//当前时间增加十年
    }

在这里插入图片描述

  • 无畏风雨,才见彩虹;不怕跌倒,才懂成长。坚信自己,勇敢向前,未来属于你。
  • 拥有梦想是勇气的表现,实现梦想是行动的结果。只有持之以恒,才能创造奇迹。
  • 生活或许会给你磨难,但坚强的人能把压力转化为动力,逆境中才能绽放出真正的力量。
  • 成功不是偶然,而是每天坚定的信念和不懈的努力累积而成。保持热情,迎接挑战,胜利必将属于你。
  • 坚持的力量,超越想象的可能。走出舒适区,追随内心的声音,并永不放弃追寻自己的梦想。

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

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

相关文章

算法通识|选择排序(简单选择排序、堆排序)

Before Writing 内容参考懒猫老师请多支持。 1 选择排序 1-1 简单排序的原理 简单选择排序的主要思想是&#xff1a;每趟排序在当前待排序序列中选出关键码最小的记录&#xff0c;添加到有序序列中。 1-2 堆选择排序的原理 堆排序主要思想是&#xff1a;每次构造一个堆&…

基于Redis实现分布式锁、限流操作(基于SpringBoot)的实现

基于Redis实现分布式锁、限流操作——基于SpringBoot实现 本文总结了一种利用Redis实现分布式锁、限流的较优雅的实现方式本文原理介绍较为通俗&#xff0c;希望能帮到有需要的人本文的demo地址&#xff1a;https://gitee.com/rederxu/lock_distributed.git 一、本文基本实现…

Python常用图片数据方法

文章目录 1. 常用图片数据类型2. 图片的显示2.1 plt.imshow()2.2 使用 turtle 来绘制图片 3.图片ndarray数据的常用切片操作使用 cv2 来读取图片打印数据R G B 通道的获取BGR 转成 RGBcv2 不支持中文路径的解决方法 4 PIL.Image 转成 QImage 或 QPixmap 1. 常用图片数据类型 使…

使用Flask快速搭建轻量级Web应用【第127篇—Flask】

使用Flask快速搭建轻量级Web应用 在Web开发领域&#xff0c;选择适合项目需求的框架至关重要。Flask&#xff0c;一个轻量级的Python Web框架&#xff0c;以其简洁、灵活和易扩展的特性而备受开发者青睐。本文将介绍如何使用Flask迅速搭建一个轻量级的Web应用&#xff0c;并通过…

【C++教程从0到1入门编程】第九篇:STL中Vector类

一、vector的介绍 1.vector的介绍 vector是表示可变大小数组的序列容器。 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以动态改变的&…

web项目抢购模块测试

web项目抢购模块测试 抢购模块(先测后台,再测前台)流程抢购用例编写测试点--后台抢购用例编写测试点--前台用例设计 面试题1: 当你发现研发实现的结果与需求不一致时怎么办? 需求评审的时候:需要确认所有输入类型的校验是针对单独的输入框做的还是在最终提交时校验 抢购模块 需…

三维天地助力科研实验室提质增效

ELN模板是一种系统化记录实验数据的方式,它可以为实验员提供一个标准化的框架,使其可以快速而准确地记录实验过程和结果。 运用ELN模板,能够保障所有实验记录均依照统一标准进行,有效防止人为差异对实验数据精准度造成不良影响。 作为国内知名的实验室数智化领域软件开发服务…

Redis Java客户端Jedis

Jedis所需要的jar包&#xff1a; <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.2.0</version> </dependency>连接Redis注意事项&#xff1a; 禁用Linux的防火墙&#xff1a;Linu…

SpringBoot(源码解析 + 实现底层机制)

文章目录 1.搭建SpringBoot底层机制开发环境1.创建maven项目2.使用Git管理项目&#xff08;可以略过&#xff09;1.创建一个github存储库2.克隆到本地&#xff0c;复制文件夹的内容3.粘贴到idea项目文件夹&#xff0c;将其作为本地仓库与远程仓库关联 3.pom.xml 引入父工程和场…

RUST 每日一省:rust logo收集

rust的logo集合&#xff0c;看看有没有你喜欢的&#xff0c;挑一个吧&#xff1b; GitHub - XuHugo/rust-logo: Collection of logo images for all rust languages 下边只是挑选了几个&#xff0c;更多的还是看github吧。

<2024最新>ChatGPT逆向教程

前言 在使用本篇文章用到的项目以及工具时,需要对其有一定的了解,无法访问以及无法使用的问题作者不承担任何责任,可以自行想办法解决遇到的问题​。 文章若有不合适,有问题的地方,请私聊指出,谢谢~ 准备工具 一台至少 2 核 2G 内存的服务器,推荐是位于香港、新加坡或…

c语言之汉诺塔的实现

思路 汉诺塔问题就是有三个盘子&#xff0c;让我们把其中一个盘子上的东西全移到另一个盘子上&#xff0c;注意的是中途必须满足大东西必须在小东西下面。 这里&#xff0c;我们有A B C三个盘子&#xff0c;假如A上有一个珠子&#xff0c;那我们直接把这一个移到C上就可以&am…

JVM是如何运行的

JVM&#xff08;Java Virtual Machine&#xff0c;Java虚拟机&#xff09;是 Java 程序的运行环境&#xff0c;它负责将 Java 字节码翻译成机器代码并执行。也就是说 Java 代码之所以能够运行&#xff0c;主要是依靠 JVM 来实现的。 JVM 整体的大概执行流程是这样的&#xff1…

数据结构:详解【顺序表】的实现

1. 顺序表的定义 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存储。动态顺序表与数组的本质区别是——根据需要动态的开辟空间大小。 2. 顺序表的功能 动态顺序表的功能一般有如下几个&#xff1a; 初始化顺序表打印顺序…

【网络安全】【密码学】【北京航空航天大学】实验七、流密码【Python实现】

实验七、流密码 实验目的 1、 了解常用的流密码算法&#xff0c;并对其进行实现&#xff1b; 2、 了解常用的伪随机数生成算法&#xff0c;并对其进行实现&#xff1b; 原理简介 流密码&#xff08;Stream Cipher&#xff09;也称为序列密码&#xff0c;它是对称密码算法的…

亚马逊扣店租/注册店铺可以使用虚拟卡吗?

亚马逊扣店租/注册店铺可以使用虚拟卡吗&#xff1f; 可以 一、亚马逊店铺类型 亚马逊提供了不同类型的店铺&#xff0c;以满足不同卖家的需求。以下是最常见的两种店铺类型&#xff1a; 1、亚马逊个人卖家店铺&#xff1a; 这是适合个人卖家的选项&#xff0c;通常称为&qu…

【相关问题解答2】bert中文文本摘要代码:结果输出为一些重复的标点符号和数字

【相关问题解答2】bert中文文本摘要代码 写在最前面问题1&#xff1a;tokenizer.py中encode函数&#xff0c;不能使用lower操作关于提问问题描述1一些建议1问题更新2&#xff1a;结果输出为一些重复的标点符号和数字一些建议21. 数据检查和预处理2. 模型和训练配置3. 过拟合和欠…

Anzo Capital昂首资本基础知识分享:货币对有几组

基础知识大分享&#xff0c;今天Anzo Capital昂首资本分享&#xff1a;外汇市场中的货币对有几组&#xff0c;都是哪些货币对&#xff1f;首先&#xff0c;货币对分为三组: 第一组&#xff1a;主要货币对 包括七种金融工具&#xff0c;占外汇市场所有交易业务的70%以上。 美…

大数据疑难问题2024

问题一&#xff1a; 集群部署一主一备&#xff0c;初始化操作没有问题&#xff0c;有两个namenode,再次重启显示只有node01有namenode 原因&#xff1a;Journalde服务需要在启动启动hdfs和yarn前再次启动 再次启动步骤&#xff1a; 1.启动3台节点的zookeeper&#xff0c;在3…

Thymeleaf 基本使用

01、Thymeleaf 官网地址&#xff1a;Thymeleafhttps://www.thymeleaf.org/ 简介 Thymeleaf是一种服务器端Java模板引擎&#xff0c;用于将数据渲染为HTML、XML、JavaScript等格式&#xff0c;并在Web浏览器中呈现给用户。 具体来说&#xff0c;Thymeleaf充当着视图层的角色&…