网站首页 > java教程 正文
该系列为java工具类系列,主要展示100个常用的java工具类。
本文是此系列的第46篇文章。此文重点讲述:日期工具类之常用日期获取。
获取日期相关的工具类,相信每个开发者都使用过,本人在项目中经常发现,日期工具类不止一个,但在代码中仍然有很多地方没有使用工具类,而是重复地去编写获取日期的代码。
究其原因,是因为:
1、工具类中没有自己要用的方法;
2、没有备注,命名不规范。
介于以上问题,本人写了一些关于获取日期的方法,可以借鉴使用。
一、获取今天日期
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
//日期类型
Date date = new Date();
输出:Tue Aug 15 16:00:50 CST 2023
//字符串类型
String today = dateFormat.format(date);
输出:20230815
二、获取昨天日期
获取昨/明天日期,获取前/后几天日期,获取前/后几月日期,获取前/后几年日期,都可以根据参数不同,分别获取,原来一样,用法类似。
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
String yesterday = format.format(cal.getTime());
输出:20230814
三、获取今日星期几
Calendar cal = Calendar.getInstance();
int dayWeek = cal.get(Calendar.DAY_OF_WEEK) - 1;
输出:2
四、获取当前周周一的日期
Calendar cal = Calendar.getInstance();
int dayWeek = cal.get(Calendar.DAY_OF_WEEK) -1;
System.out.println(dayWeek);
cal.add(Calendar.DATE, -dayWeek + 1);
String monday = new SimpleDateFormat( "yyyyMMdd").format(cal.getTime());
输出:20230814
五、获取两日期的间隔天数
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Date date1 = format.parse("20230815");
Date date2 = format.parse("20230915");
long day = (date2.getTime() - date1.getTime()) / (24 * 60 * 60 * 1000);
输出:31
六、获取n天以后的日期
int days = 88;
Date date = new Date();
long dateTime = (date.getTime() / 1000) + days * 24 * 60 * 60;
date.setTime(dateTime * 1000);
String tarDate = new SimpleDateFormat("yyyyMMdd").format(date);
输出:20231111
七、获取当前年是闰年还是平年
众所周知:能被4整除而不能被100整除,或者能被400整除的是闰年,否则是平年。我们可以手写代码去判断年份,也可以使用java.time.LocalDate。
LocalDate now = LocalDate.now();
boolean leapYear = now.isLeapYear();
if (leapYear){
//闰年
} else {
//平年
}
八、获取n年n月n天之前/后的日期
int beforeDay = 1;
int beforeMonth = 1;
int beforeYear = 1;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_YEAR, cal.get(Calendar.DAY_OF_YEAR) - beforeDay);
cal.add(Calendar.MONTH, -beforeMonth);
cal.add(Calendar.YEAR, -beforeYear);
Date today = cal.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
String tarDay = format.format(today);
输出:20220714
感谢你的阅读,喜欢的话给个赞吧。
这个图我是真不知道咋配~_~
猜你喜欢
- 2024-09-19 Oracle查询语句,你知道几个?(oracle查询数据有哪几种方法)
- 2024-09-19 Java.time时间处理(java处理时间格式)
- 2024-09-19 浅谈Java8日期时间处理(java日期比较)
- 2024-09-19 「案例学习」Java8 日期时间(「案例学习」Java8 日期时间段)
- 2024-09-19 Java时间类介绍:Date的使用(java中date类型的日期应该怎么写)
- 2024-09-19 Java日期时间(javadoc 日期)
- 2024-09-19 你知道吗,Linux下竟然无法获取文件创建时间
- 2024-09-19 Java 8新特性探究(七)深入解析日期和时间-JSR310
- 2024-09-19 【Java】Vert.x Jackson 序列化后日期数据正常展示
- 2024-09-19 java 8 日期操作,真香(java8日期详解)
你 发表评论:
欢迎- 最近发表
-
- class版本不兼容错误原因分析(class更新)
- 甲骨文Oracle公司为Java的最新LTS版本做出改进
- 「版本发布」Minecraft Java开发版 1.19.4-pre1 发布
- java svn版本管理工具(svn软件版本管理)
- 我的世界1.8.10钻石在第几层(我的世界1.7.2钻石在哪层)
- Java开发高手必备:在电脑上轻松切换多个JDK版本
- 2022 年 Java 开发报告:Java 8 八年不到,开发者都在用什么?
- 开发java项目,选择哪个版本的JDK比较合适?
- Java版本选型终极指南:8 vs 17 vs 21特性对决!大龄程序员踩坑总结
- POI Excel导入(poi excel导入附件)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)