我们要使用StringUtil工具类,所以首先导入;
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.1</version>
</dependency>
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @ClassName DateUtil
* @Description 时间工具类
* @Author 扶苏
* @Date 2021/11/3 22:27
* @Version V1.0
*/
public class DateUtil {
/** 常用日期格式 yyyy-MM-dd */
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
/** 常用时间格式 HH:mm:ss */
public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
/** 常用日期时间格式 yyyy-MM-dd HH:mm:ss */
public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
/** 文本展示格式 yyyy年MM月dd日 */
public static final String CN_DATE_FORMAT = "yyyy年MM月dd日";
// 1. 时间转换String
/**
* Date类型转为指定格式的String类型
* @param date
* @param pattern
*/
public static String dateToString(Date date, String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(date);
}
/**
* unix时间戳转为指定格式的String类型 -- System.currentTimeMillis()
* */
public static String dateToString(long date ,String pattern){
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
Date nowDate = new Date(date * 1000);
return sdf.format(nowDate);
}
// 2. String转时间
/**
* String 转 Date
* */
public static Date StringToDate(String date ,String pattern){
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
Date nowDate = new Date();
try{
nowDate = sdf.parse(date);
} catch (Exception e){
e.printStackTrace();
}
return nowDate;
}
/**
* String 转 时间戳
* */
public static long StringToUnixLong(String date){
Date nowDate = StringToDate(date, "");
Timestamp timestamp = new Timestamp(nowDate.getTime());
return timestamp.getTime() / 1000;
}
// 3. 获取当前时间
/**
* 获取当前时间 - Date
* */
public static String getDate(String pattern){
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(new Date());
}
/**
* 获取当前时间 - 时间戳
* */
public static long getUnixLong(){
return System.currentTimeMillis();
}
// 4. 日期计算
// 4.1 日期分割算法 - 根据指定天数进行分割
public static List<Map<String,Object>> splitDateList (String startDateStr, String endDateStr, int dayNum, String pattern) throws Exception{
SimpleDateFormat df = new SimpleDateFormat(pattern);
if(dayNum < 1){ return null; }
List<Map<String,Object>> dateList = new ArrayList<Map<String,Object>>();
//时间转换
Date startDate = df.parse(startDateStr);
Date endDate = df.parse(endDateStr);
//创建日历
Calendar cal = Calendar.getInstance();
//设置时间
cal.setTime(startDate);
while(true){
Map<String,Object> dateMap = new HashMap<String,Object>();
//遍历设置天数
cal.add(Calendar.DATE, dayNum-1);
if(cal.getTime().getTime() < endDate.getTime()){
dateMap.put("startDate", df.format(startDate));
dateMap.put("endDate", df.format(cal.getTime()));
dateList.add(dateMap);
}else{
dateMap.put("startDate", df.format(startDate));
dateMap.put("endDate", df.format(endDate));
dateList.add(dateMap);
break;
}
//重新设置天数
cal.add(Calendar.DATE, 1);
startDate = cal.getTime();
}
return dateList;
}
}