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

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

相关文章
|
2月前
|
人工智能
Qwen3.8抢先体验!正式版即将发布并开源!
千问Qwen3.8即将开源,参数达2.4T,进化速度以“天”计,实力媲美Fable 5。预览版Qwen3.8-Max已上线阿里Token Plan等平台,限时优惠:日间Credits低至1折,夜间更优,个人/团队版月付仅35元起!
4234 146
|
29天前
|
JavaScript API 开发者
DeepSeek Harness 刚发布,先让它做了个网页
DeepSeek Harness(DSH)是DeepSeek开源的Agent执行框架,践行“Model + Harness = Agent”理念。v0.1开发者预览版发布次日即实测成功:一行命令`npx @deepseek-ai/dsh web`启动,自动完成搜索、规划、写HTML、本地验证全流程,支持插件扩展与完整执行轨迹追踪。(239字)
552 1
DeepSeek Harness 刚发布,先让它做了个网页
|
20天前
|
人工智能 JavaScript 安全
19万Star DeepSeek Harness小白 10 分钟上手实操
DeepSeek Harness(dsh)是8月13日发布的本地AI智能体工作台,GitHub已获19万Star。它纯本地运行,支持读文件、改代码、查资料、执行命令,界面轻量、上手简单。本文手把手教你安装配置、运行首个任务,并推荐实用插件,小白10分钟即可上手。(239字)
|
18天前
|
人工智能 安全 网络协议
|
21天前
|
弹性计算 人工智能 运维
阿里云轻量应用服务器指南:收费价格、适用场景、轻量实例及限制说明
阿里云轻量应用服务器(SAS)是面向开发者、学生及小微企业的轻量化云服务,开箱即用、操作极简。2026年全系标配200M峰值带宽+不限流量,预装WordPress、Docker、AI等24种镜像,38元起/年,分钟级部署,高性价比入门首选。阿里云轻量应用服务器官网:https://t.aliyun.com/U/dwftch
|
22天前
|
人工智能 监控 数据可视化
阿里云百炼大模型服务平台全解析:功能、计费、部署与API开发实战手册
在AI技术快速普及的当下,大量企业与开发者面临共同难题:搭建大模型应用需要处理模型选型、算力调度、数据处理、提示词调试、知识库构建、应用部署、监控运维等一系列复杂工作。从零搭建整套体系,不仅需要投入高额算力成本,还要求团队掌握大模型训练、向量检索、服务化部署等多领域专业知识,对于中小企业、独立开发者以及非技术业务团队而言门槛极高。阿里云百炼作为一站式大模型服务平台,定位为MaaS模型即服务平台,把模型调用、数据集处理、提示词工程、RAG知识库、智能体编排、模型微调、自动化评测、服务发布、用量监控全部整合到统一控制台当中,开发者与业务人员可以在同一个平台完成从模型测试到业务应用上线的完整流程,大
242 2
|
23天前
|
安全 关系型数据库 网络安全
阿里云服务器2核2G3M带宽不限流量99元,新老同享,续费同价,买到的不只是一台云服务器
本文聚焦阿里云“99元,买到的不只是一台云服务器”专属活动,核心推出2核2G、3M不限带宽的经济型e实例,实现99元/年一口价,新老用户续费同价,价格锁定至2029年。活动跳出单一硬件售卖逻辑,同步配套三重保障:锁定价格的云服务器、0元开通的3个月主机安全防护与100G免费文件备份,以及支持平滑升级的业务成长路径。文中拆解了个人博客搭建、开发测试实训、个人项目上线三类原生用法,还搭配域名、SSL证书、云数据库等周边产品组合场景,叠加7×24技术支持等四大服务标准,为用户交付一整套高性价比的入门级安心上云方案。
|
29天前
|
监控
阿里云轻量应用服务器不限流量是真的不限吗?无固定流量有没有流量上限?
阿里云轻量应用服务器“不限流量”仅适用于标注“无固定流量”的套餐,即流量无上限、不额外收费;含“每月XXGB”配额的套餐则超额按0.8元/GB计费。注意:200M为峰值带宽,非保障带宽,且禁止流量穿透。阿里云轻量应用服务器官网:https://t.aliyun.com/U/dwftch
|
29天前
|
存储 监控 API
基于 RAG + LangChain 搭建企业级私有知识库问答系统(2026 实战版)
本文是作者基于多个企业RAG知识库落地经验的实战总结,提供完整可运行代码与十年避坑指南。涵盖文档解析、混合检索、向量存储、DeepSeek接入、结果重排、拒答机制及效果评估,助你构建本地可运行、生产可扩展的企业级私有知识库系统。(239字)
380 1

热门文章

最新文章