文章目录
前言
类中方法都亲测。欢迎留言。
DateUtils类
package com.example.jkytest.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class DateUtils {
public static void main(String[] args) throws ParseException {
/*//演示 findEveryDay
List<String> dates = findEveryDay("2022-05-20 12:00", "2022-06-17 15:00:30");
System.out.println("时间==" + dates);
//演示 getDaysOfMonth
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
System.out.println(getDaysOfMonth(sdf.parse("2023-02")));
//演示 getLastOneMonthDay
System.out.println(getLastOneMonthDay());
//演示 getNowOneMonthDay
System.out.println(getNowOneMonthDay());
//演示 strToDateFormat
System.out.println(strToDateFormat("20230218"));*/
//演示 getByDay
System.out.println(getByDay(-1, "yyyyMMdd"));
}
/**
* 获取前N天日期
* @param day 天数 例(-1为前一天)
* @param simpleDateFormat 日期格式 例(yyyyMMdd)
*/
public static String getByDay(int day, String simpleDateFormat) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, day);
SimpleDateFormat format = new SimpleDateFormat(simpleDateFormat);
return format.format(calendar.getTime());
}
/**
* 传入两个时间范围,返回这两个时间范围内的所有日期,并保存在一个集合中
*
* @param beginTime
* @param endTime
* @return
* @throws ParseException
*/
public static List<String> findEveryDay(String beginTime, String endTime)
throws ParseException {
//1.创建一个放所有日期的集合
List<String> dates = new ArrayList();
//2.创建时间解析对象规定解析格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//3.将传入的时间解析成Date类型,相当于格式化
Date dBegin = sdf.parse(beginTime);
Date dEnd = sdf.parse(endTime);
//4.将格式化后的第一天添加进集合
dates.add(sdf.format(dBegin));
//5.使用本地的时区和区域获取日历
Calendar calBegin = Calendar.getInstance();
//6.传入起始时间将此日历设置为起始日历
calBegin.setTime(dBegin);
//8.判断结束日期是否在起始日历的日期之后
while (dEnd.after(calBegin.getTime())) {
// 9.根据日历的规则:月份中的每一天,为起始日历加一天
calBegin.add(Calendar.DAY_OF_MONTH, 1);
//10.得到的每一天就添加进集合
dates.add(sdf.format(calBegin.getTime()));
//11.如果当前的起始日历超过结束日期后,就结束循环
}
return dates;
}
/**
* 获取某个月的天数
*
* @param date
* @return 天数
*/
public static int getDaysOfMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
/**
* 获取上个月第一天和上个月最后一天
*/
public static Map<String, String> getLastOneMonthDay() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Map<String, String> map = new HashMap<>();
// 上月起始
Calendar lastMonthFirstDateCal = Calendar.getInstance();
lastMonthFirstDateCal.add(Calendar.MONTH, -1);
lastMonthFirstDateCal.set(Calendar.DAY_OF_MONTH, 1);
String lastMonthFirstTime = format.format(lastMonthFirstDateCal.getTime());
System.out.println("上月起始:" + lastMonthFirstTime);
// 上月末尾
Calendar lastMonthEndDateCal = Calendar.getInstance();
lastMonthEndDateCal.add(Calendar.MONTH, -1);
lastMonthEndDateCal.set(
Calendar.DAY_OF_MONTH, lastMonthEndDateCal.getActualMaximum(Calendar.DAY_OF_MONTH));
String lastMonthEndTime = format.format(lastMonthEndDateCal.getTime());
System.out.println("上月末尾:" + lastMonthEndTime);
map.put("beginDate", lastMonthFirstTime);
map.put("endDate", lastMonthEndTime);
return map;
}
/**
* 获取当月第一天和上个月最后一天
*/
public static Map<String, String> getNowOneMonthDay() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Map<String, String> map = new HashMap<>();
// 本月起始
Calendar thisMonthFirstDateCal = Calendar.getInstance();
thisMonthFirstDateCal.set(Calendar.DAY_OF_MONTH, 1);
String thisMonthFirstTime = format.format(thisMonthFirstDateCal.getTime());
System.out.println("本月起始:" + thisMonthFirstTime);
// 本月末尾
Calendar thisMonthEndDateCal = Calendar.getInstance();
thisMonthEndDateCal.set(
Calendar.DAY_OF_MONTH, thisMonthEndDateCal.getActualMaximum(Calendar.DAY_OF_MONTH));
String thisMonthEndTime = format.format(thisMonthEndDateCal.getTime());
System.out.println("本月末尾:" + thisMonthEndTime);
map.put("beginDate", thisMonthFirstTime);
map.put("endDate", thisMonthEndTime);
return map;
}
/**
*将字符串格式yyyyMMdd的字符串转为日期,格式"yyyy-MM-dd"
*
* @param date 日期字符串
* @return 返回格式化的日期
* @throws ParseException 分析时意外地出现了错误异常
*/
public static String strToDateFormat(String date) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
formatter.setLenient(false);
Date newDate= formatter.parse(date);
formatter = new SimpleDateFormat("yyyy-MM-dd");
return formatter.format(newDate);
}
}
总结
如果此篇文章有帮助到您, 希望打大佬们能
关注
、点赞
、收藏
、评论
支持一波,非常感谢大家!
如果有不对的地方请指正!!!