Java日期工具类:日期转化、今天日期、昨天日期、明天日期、指定日期

简介: 程序员常被日期转换困扰?本文分享自研Java日期工具类DateTools,支持今天/明天/昨天获取、日期与字符串双向转换、指定日期前后天计算等功能,代码简洁实用,助你提升开发效率!

想必程序员在开发过程中,遇到日期转化肯定避免不了的。它让人爱恨不已,而有些又记不住,每次遇到都得问度娘。我最近在开发过程中亦是如此。

为了让自己更好的记忆,方便以后遇到日期类型转化相关开发。因此,自己作了适当的整理,编写了一个Java日期工具类,包括获得今天日期、昨天日期、明天日期、日期和字符串之间转化等相关转化。希望这个日期工具类,也能提高你对日期转化的开发效率。

日期工具类:DateTools.java

package com.geshanzsq;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
* 日期工具类
* @author 格姗知识圈
*/
public class DateTools {

   /**
    * 日期转化为指定日期格式类型
    * @param date 日期
    * @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
    * @return
    */
   public static String dateToString(Date date,String pattern){
       SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
       String date_str = sdf.format(date);//日期转化为指定格式
       return date_str;
   }

   /**
    * 日期字符串转化为指定日期格式类型
    * @param date_str 日期字符串
    * @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
    * @return
    * @throws ParseException
    */
   public static Date stringToDate(String date_str,String pattern) throws ParseException {
       SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
       Date date = sdf.parse(date_str);//日期转化为指定格式
       return date;
   }

   /**
    * 获得今天日期
    * @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
    * @return
    */
   public static String getToday(String pattern){
       Date date = new Date();//今天日期
       SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
       String today = sdf.format(date);//日期转化为指定格式
       return today;
   }

   /**
    * 获得明天日期
    * @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
    * @return
    */
   public static String getTomorrow(String pattern){
       Date date = new Date();//今天日期
       Calendar cal = new GregorianCalendar();
       cal.setTime(date);//设置时间
       cal.add(Calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
       date = cal.getTime();//这个时间就是日期往后推一天的日期结果,即明天日期
       SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
       String tommorrow = sdf.format(date);//明天日期
       return tommorrow;
   }

   /**
    * 获得昨天日期
    * @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
    * @return
    */
   public static String getYesterday(String pattern){
       Date date = new Date();//今天日期
       Calendar cal = new GregorianCalendar();
       cal.setTime(date);//设置时间
       cal.add(Calendar.DATE,-1);//把日期往后增加一天.整数往后推,负数往前移动
       date = cal.getTime();//这个时间就是日期往前推一天的日期结果,即昨天日期
       SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
       String yesterday = sdf.format(date);//昨天日期
       return yesterday;
   }

   /**
    * 获得指定日期的后一天
    * @param date 指定日期
    * @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
    * @return
    * @throws ParseException
    */
   public static Date getAfterDay(Date date,String pattern) throws ParseException {
       Calendar cal = new GregorianCalendar();
       cal.setTime(date);//设置时间
       cal.add(Calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
       date = cal.getTime();//这个时间就是日期往后推一天的日期结果,即后一天日期
       SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
       String next_date_str = sdf.format(date);//后一天日期
       //将日期字符串转化为指定日期格式类型
       Date after_date =  stringToDate(next_date_str,pattern);
       return after_date;
   }

   /**
    * 获得指定日期的后一天
    * @param date_str 指定日期字符串
    * @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
    * @return
    * @throws ParseException
    */
   public static String getAfterDay(String date_str,String pattern) throws ParseException {
       //将日期字符串转化为指定日期格式类型
       Date date = stringToDate(date_str,pattern);
       Calendar cal = new GregorianCalendar();
       cal.setTime(date);//设置时间
       cal.add(Calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
       date = cal.getTime();//这个时间就是日期往后推一天的日期结果,即后一天日期
       SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
       String after_date_str = sdf.format(date);//后一天日期
       return after_date_str;
   }

   /**
    * 获得指定日期的前一天
    * @param date 指定日期
    * @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
    * @return
    * @throws ParseException
    */
   public static Date getBeforetDay(Date date,String pattern) throws ParseException {
       Calendar cal = new GregorianCalendar();
       cal.setTime(date);//设置时间
       cal.add(Calendar.DATE,-1);//把日期往后增加一天.整数往后推,负数往前移动
       date = cal.getTime();//这个时间就是日期往后推一天的日期结果,即前一天日期
       SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
       String before_date_str = sdf.format(date);//前一天日期
       //将日期字符串转化为指定日期格式类型
       Date before_date =  stringToDate(before_date_str,pattern);
       return before_date;
   }

   /**
    * 获得指定日期的前一天
    * @param date_str 指定日期字符串
    * @param pattern 日期格式类型,如yyyy-MM-dd,yyyy年MM月dd日 HH:mm:ss
    * @return
    * @throws ParseException
    */
   public static String getBreforeDay(String date_str,String pattern) throws ParseException {
       //将日期字符串转化为指定日期格式类型
       Date date = stringToDate(date_str,pattern);
       Calendar cal = new GregorianCalendar();
       cal.setTime(date);//设置时间
       cal.add(Calendar.DATE,-1);//把日期往后增加一天.整数往后推,负数往前移动
       date = cal.getTime();//这个时间就是日期往后推一天的日期结果,即前一天日期
       SimpleDateFormat sdf = new SimpleDateFormat(pattern);//日期格式
       String before_date_str = sdf.format(date);//前一天日期
       return before_date_str;
   }

}

测试类:Test.java

package com.geshanzsq;

import java.text.ParseException;

/**
* 测试类
* @author 格姗知识圈
*/
public class Test {

   public static void main(String[] args) throws ParseException {

       //日期格式类型
       String pattern = "yyyy-MM-dd";

       //获得今天日期
       System.out.println("---------获得今天日期---------");
       String today = DateTools.getToday(pattern);
       System.out.println("今天日期:"+today);

       //获得明天日期
       System.out.println("---------获得明天日期---------");
       String tomorrow = DateTools.getTomorrow(pattern);
       System.out.println("明天日期:"+tomorrow);

       //获得昨天日期
       System.out.println("---------获得昨天日期---------");
       String yesterday = DateTools.getYesterday(pattern);
       System.out.println("昨天日期:"+yesterday);

       //获得指定日期的后一天
       System.out.println("---------获得指定日期的后一天---------");
       String date_str = "2018-10-03";
       System.out.println("指定日期:"+date_str);
       String after_date = DateTools.getAfterDay(date_str,pattern);
       System.out.println("指定日期的后一天:"+after_date);

       //获得指定日期的后一天
       System.out.println("---------获得指定日期的前一天---------");
       System.out.println("指定日期:"+date_str);
       String before_date = DateTools.getBreforeDay(date_str,pattern);
       System.out.println("指定日期的前一天:"+before_date);
   }

}

运行结果:

---------获得今天日期---------
今天日期:2018-11-20
---------获得明天日期---------
明天日期:2018-11-21
---------获得昨天日期---------
昨天日期:2018-11-19
---------获得指定日期的后一天---------
指定日期:2018-10-03
指定日期的后一天:2018-10-04
---------获得指定日期的前一天---------
指定日期:2018-10-03
指定日期的前一天:2018-10-02

你看完之后,相信对日期转化有了更好的了解。当然,代码里面有部分是冗余的,主要是为了方便让大家清晰看懂。你看懂理解后,可以根据业务需要进行适当的修改。

相关文章
|
3月前
|
关系型数据库 MySQL Linux
Linux 安装 MySQL 8 数据库(图文详细教程)
本教程手把手教你如何在 Linux 安装 MySQL 数据库。图文详细教程!
581 3
Linux 安装 MySQL 8 数据库(图文详细教程)
|
3月前
|
Oracle Java 关系型数据库
Linux 安装 JDK 环境
由于 JDK1.8.202 是最后一个免费版本,建议下载此版本。由于在 Oracle 官方网站下载需要登录,可通过华为云镜像下载。
571 1
Linux 安装 JDK 环境
|
3月前
|
消息中间件 存储 人工智能
免费送 10 张三天通票!邀你共赴 ApacheCon 2026
Community Over Code 是 Apache 软件基金会(ASF)官方全球系列大会,今年,Community Over Code Asia 2026 将于 8 月 7-9 日在北京市海淀区中关村国家自主创新示范区会议中心举行,覆盖 AI、云原生、大数据、开源社区治理等热点领域。阿里云云原生应用平台团队将携手开源社区贡献者和用户们,在消息、微服务、Web 应用与框架三大领域带来 11 个议题,欢迎大家报名参加。关注阿里云云原生公众号,在本文章评论区留言回复 ASFC+你想听的议题,前 10 名参与互动的用户将获得大会三天通票一张(价值 999 元)。
353 15
|
3月前
|
Arthas 监控 Java
阿里程序员常用的 15 款开发者工具!
阿里巴巴将自身在各类业务场景下的技术积淀,通过开源、云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率、更优雅的写代码。
598 1
|
3月前
|
前端开发 Java 数据库连接
Spring Boot 详细简介!
Spring Boot 是什么?能干啥?
344 0
Spring Boot 详细简介!
|
3月前
|
网络协议 Linux
Linux系统之last命令的基本使用
Linux系统之last命令的基本使用
328 3
|
3月前
|
缓存 监控 API
亚马逊商品详情接口完全指南:从 PA-API 到 SP-API 的全链路实战
本文系统解析亚马逊商品详情接口两大体系:面向联盟推广的PA-API(含价格、图片、标题等基础信息)与面向卖家运营的SP-API(含库存、变体、BSR等全量数据),对比权限、字段、调用方式,并提供Python实战代码及选型指南,助跨境卖家、分析师高效对接核心数据。
|
3月前
|
人工智能 开发工具 数据库
基于阿里云 Milvus 构建短剧生产平台--生图生视频与内容搜索实践
本文用四个 Milvus AI Function 把 AIGC 短剧生产的完整链路串成一条「生成 → 检索」流水线,它的价值不只是"生成快",更在于把每一次生成都沉淀为可检索、可复用的素材资产,让内容团队从一次性消耗走向资产化经营。
|
3月前
|
数据采集 人工智能 自然语言处理
一文读懂 AI+数据开发治理:什么是、能做什么、怎么落地、如何选型?
2026年,传统数据开发治理深陷ETL繁重、血缘滞后、口径不一、业治脱节四大困境。AI+数据开发治理以大模型+语义层+Agent引擎,实现“采-建-管-用”全链路自动化,推动从Copilot辅助迈向具备主动推理与闭环执行能力的Agentic Data Engine,成为企业数字化3.0核心基座。

热门文章

最新文章